private int[] parsePrefix() {
        assert (peek() != null) : "parsePrefix() can't start at EOF";
        
        int[] toReturn = {0, 0, 0};
        
        // First, parse a digit, if we begin with one
        Boolean quitNow = parseFirstDigit(toReturn);
        if (quitNow == Boolean.TRUE){
            return toReturn;
        }
        
        // Parse whatever's left
        switch(peek().type){
            case NTY:
                parseNty(toReturn);
                break;
            case TEEN:
                toReturn[TENS_DIG] = 1;
                toReturn[ONES_DIG] = consume().value;
                break;
            case DIGIT:
                assert(toReturn[HUNDREDS_DIG] != 0) : "We should've parsed this above";
                toReturn[ONES_DIG] = consume().value;
                break;
            default:
                if (toReturn[HUNDREDS_DIG] == 0){
                    em.error("Unexpected token: \"%s\"", peek());
                    return null;
                }
                break;
        }
        
        return toReturn;
    }