Changes in / [1b5c81ed:f80e0218]


Ignore:
Files:
175 added
425 deleted
111 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r1b5c81ed rf80e0218  
    3131# generated by bison and lex from cfa.yy and lex.ll, respectively
    3232src/Parser/parser.output
    33 
    34 # generated by latex
    35 *.aux
    36 *.bbl
    37 *.blg
    38 *.brf
    39 *.dvi
    40 *.idx
    41 *.ilg
    42 *.ind
    43 *.log
    44 *.out
    45 *.pdf
    46 *.ps
    47 *.toc
  • Jenkinsfile

    r1b5c81ed rf80e0218  
    1 node ('linux'){
    2   stage 'Build'
    3   checkout scm //checkout the source code from source control
    4   sh 'CC=gcc-4.9 CXX=g++-4.9 ./configure'
    5   sh 'make -j 8'
    6  }
     1#!groovy
     2
     3//===========================================================================================================
     4// Main compilation routine
     5//===========================================================================================================
     6//Compilation script is done here but environnement set-up and error handling is done in main loop
     7def cfa_build(boolean full_build) {
     8        build_stage 'Checkout'
     9                def install_dir = pwd tmp: true
     10                //checkout the source code and clean the repo
     11                checkout scm
     12
     13                //Clean all temporary files to make sure no artifacts of the previous build remain
     14                sh 'git clean -fdqx'
     15
     16                //Reset the git repo so no local changes persist
     17                sh 'git reset --hard'
     18
     19        build_stage 'Build'
     20
     21                //Configure the conpilation (Output is not relevant)
     22                //Use the current directory as the installation target so nothing
     23                //escapes the sandbox
     24                //Also specify the compiler by hand
     25                sh "./configure CXX=${currentCC.cpp_cc} --with-backend-compiler=${currentCC.cfa_backend_cc} --prefix=${install_dir} --enable-silent-rules --quiet"
     26
     27                //Compile the project
     28                sh 'make -j 8 --no-print-directory V=0 install'
     29
     30        build_stage 'Test'
     31
     32                //Run the tests from the tests directory
     33                dir ('src/tests') {
     34                        if (full_build) {
     35                                sh 'make all-tests'
     36                        }
     37                        else {
     38                                sh 'make'
     39                        }
     40                }
     41
     42        build_stage 'Cleanup'
     43
     44                //do a maintainer-clean to make sure we need to remake from scratch
     45                sh 'make maintainer-clean > /dev/null'
     46}
     47
     48def make_doc() {
     49        def err = null
     50
     51        try {
     52                sh 'make clean > /dev/null'
     53                sh 'make > /dev/null 2>&1'
     54        }
     55
     56        catch (Exception caughtError) {
     57                //rethrow error later
     58                err = caughtError
     59
     60                sh 'cat *.log'
     61        }
     62
     63        finally {
     64                /* Must re-throw exception to propagate error */
     65                if (err) {
     66                        throw err
     67                }
     68        }
     69}
     70
     71def doc_build() {
     72        stage 'Documentation'
     73
     74                status_prefix = 'Documentation'
     75
     76                dir ('doc/user') {
     77                        make_doc()
     78                }
     79
     80                dir ('doc/refrat') {
     81                        make_doc()
     82                }
     83}
     84
     85def push_build() {
     86        //Don't use the build_stage function which outputs the compiler
     87        stage 'Push'
     88
     89                status_prefix = 'Push'
     90
     91                def out_dir = pwd tmp: true
     92                sh "mkdir -p ${out_dir}"
     93
     94                //parse git logs to find what changed
     95                sh "git remote > ${out_dir}/GIT_REMOTE"
     96                git_remote = readFile("${out_dir}/GIT_REMOTE")
     97                remoteDoLangExists = git_remote.contains("DoLang")
     98
     99                if( !remoteDoLangExists ) {
     100                        sh 'git remote add DoLang git@gitlab.do-lang.org:internal/cfa-cc.git'
     101                }
     102
     103                sh "git push DoLang ${gitRefNewValue}:master"
     104}
     105
     106//===========================================================================================================
     107// Helper classes/variables/routines to make the status and stage name easier to use
     108//===========================================================================================================
     109//Description of a compiler (Must be serializable since pipelines are persistent)
     110class CC_Desc implements Serializable {
     111        public String cc_name
     112        public String cpp_cc
     113        public String cfa_backend_cc
     114
     115        CC_Desc(String cc_name, String cpp_cc, String cfa_backend_cc) {
     116                this.cc_name = cc_name
     117                this.cpp_cc = cpp_cc
     118                this.cfa_backend_cc = cfa_backend_cc
     119        }
     120}
     121
     122//Global Variables defining the compiler and at which point in the build we are
     123// These variables are used but can't be declared before hand because of wierd scripting rules
     124// @Field String currentCC
     125// @Field String status_prefix
     126
     127//Wrapper to sync stage name and status name
     128def build_stage(String name) {
     129        def stage_name = "${currentCC.cc_name} ${name}".trim()
     130        stage stage_name
     131
     132                status_prefix = stage_name
     133}
     134
     135//Helper routine to collect information about the git history
     136def collect_git_info() {
     137
     138        //create the temporary output directory in case it doesn't already exist
     139        def out_dir = pwd tmp: true
     140        sh "mkdir -p ${out_dir}"
     141
     142        //parse git logs to find what changed
     143        gitRefName = env.BRANCH_NAME
     144        dir("../${gitRefName}@script") {
     145                sh "git reflog > ${out_dir}/GIT_COMMIT"
     146        }
     147        git_reflog = readFile("${out_dir}/GIT_COMMIT")
     148        gitRefOldValue = (git_reflog =~ /moving from (.+) to (.+)/)[0][1]
     149        gitRefNewValue = (git_reflog =~ /moving from (.+) to (.+)/)[0][2]
     150}
     151
     152//===========================================================================================================
     153// Main loop of the compilation
     154//===========================================================================================================
     155node ('master'){
     156
     157        boolean doPromoteBuild2DoLang
     158        def err = null
     159        def log_needed = false
     160        currentBuild.result = "SUCCESS"
     161        status_prefix = ''
     162
     163        try {
     164                //Prevent the build from exceeding 30 minutes
     165                timeout(60) {
     166
     167                        //Wrap build to add timestamp to command line
     168                        wrap([$class: 'TimestamperBuildWrapper']) {
     169
     170                                collect_git_info()
     171
     172                                properties ([                                                                   \
     173                                        [$class: 'ParametersDefinitionProperty',                                \
     174                                                parameterDefinitions: [                                         \
     175                                                [$class: 'BooleanParameterDefinition',                          \
     176                                                  defaultValue: false,                                          \
     177                                                  description: 'If true, the build will be promoted to the do-lang git repository (on successful builds only)', \
     178                                                  name: 'promoteBuild2DoLang'                           \
     179                                                ]]                                                                      \
     180                                        ]])
     181
     182                                doPromoteBuild2DoLang = promoteBuild2DoLang == 'true'
     183
     184                                echo "FULL BUILD = ${doPromoteBuild2DoLang}"
     185
     186                                //Compile using gcc-4.9
     187                                currentCC = new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9')
     188                                cfa_build(doPromoteBuild2DoLang)
     189
     190                                //Compile latex documentation
     191                                doc_build()
     192
     193                                if( doPromoteBuild2DoLang ) {
     194                                        //Compile using gcc-5
     195                                        currentCC = new CC_Desc('gcc-5', 'g++-5', 'gcc-5')
     196                                        cfa_build(true)
     197
     198                                        //Compile using gcc-4.9
     199                                        currentCC = new CC_Desc('gcc-6', 'g++-6', 'gcc-6')
     200                                        cfa_build(true)
     201
     202                                        //Push latest changes to do-lang repo
     203                                        push_build()
     204                                }
     205                        }
     206                }
     207        }
     208
     209        //If an exception is caught we need to change the status and remember to
     210        //attach the build log to the email
     211        catch (Exception caughtError) {
     212                //rethrow error later
     213                err = caughtError
     214
     215                //An error has occured, the build log is relevent
     216                log_needed = true
     217
     218                //Store the result of the build log
     219                currentBuild.result = "${status_prefix} FAILURE".trim()
     220        }
     221
     222        finally {
     223                //Send email with final results
     224                notify_result(doPromoteBuild2DoLang, err, currentBuild.result, log_needed)
     225
     226                /* Must re-throw exception to propagate error */
     227                if (err) {
     228                        throw err
     229                }
     230        }
     231}
     232
     233//===========================================================================================================
     234//Routine responsible of sending the email notification once the build is completed
     235//===========================================================================================================
     236def notify_result(boolean promote, Exception err, String status, boolean log) {
     237        echo 'Build completed, sending result notification'
     238        if(promote)     {
     239                if( err ) {
     240                        promote_email(status)
     241                }
     242        }
     243        else {
     244                email(status, log)
     245        }
     246}
     247
     248//Email notification on a full build failure
     249def promote_email(String status) {
     250        //Since tokenizer doesn't work, figure stuff out from the environnement variables and command line
     251        //Configurations for email format
     252        def email_subject = "[cforall git][PROMOTE - FAILURE]"
     253        def email_body = """This is an automated email from the Jenkins build machine. It was
     254generated because of a git hooks/post-receive script following
     255a ref change was pushed to the repository containing
     256the project "UNNAMED PROJECT".
     257
     258Check console output at ${env.BUILD_URL} to view the results.
     259
     260- Status --------------------------------------------------------------
     261
     262PROMOTE FAILURE - ${status}
     263"""
     264
     265        def email_to = "pabuhr@uwaterloo.ca, rschlunt@uwaterloo.ca, a3moss@uwaterloo.ca, tdelisle@uwaterloo.ca, brice.dobry@huawei.com"
     266
     267        //send email notification
     268        emailext body: email_body, subject: email_subject, to: email_to, attachLog: true
     269}
     270
     271//Standard build email notification
     272def email(String status, boolean log) {
     273        //Since tokenizer doesn't work, figure stuff out from the environnement variables and command line
     274        //Configurations for email format
     275        def project_name = (env.JOB_NAME =~ /(.+)\/.+/)[0][1].toLowerCase()
     276
     277        def gitLog = 'Error retrieving git logs'
     278        def gitDiff = 'Error retrieving git diff'
     279
     280        try {
     281
     282                sh "git rev-list --format=short ${gitRefOldValue}...${gitRefNewValue} > GIT_LOG"
     283                gitLog = readFile('GIT_LOG')
     284
     285                sh "git diff --stat ${gitRefNewValue} ${gitRefOldValue} > GIT_DIFF"
     286                gitDiff = readFile('GIT_DIFF')
     287        }
     288        catch (Exception error) {}
     289
     290        def email_subject = "[${project_name} git][BUILD# ${env.BUILD_NUMBER} - ${status}] - branch ${env.BRANCH_NAME}"
     291        def email_body = """This is an automated email from the Jenkins build machine. It was
     292generated because of a git hooks/post-receive script following
     293a ref change was pushed to the repository containing
     294the project "UNNAMED PROJECT".
     295
     296The branch ${env.BRANCH_NAME} has been updated.
     297   via  ${gitRefOldValue} (commit)
     298  from  ${gitRefNewValue} (commit)
     299
     300Check console output at ${env.BUILD_URL} to view the results.
     301
     302- Status --------------------------------------------------------------
     303
     304BUILD# ${env.BUILD_NUMBER} - ${status}
     305
     306- Log -----------------------------------------------------------------
     307${gitLog}
     308-----------------------------------------------------------------------
     309Summary of changes:
     310${gitDiff}
     311"""
     312
     313        def email_to = "pabuhr@uwaterloo.ca, rschlunt@uwaterloo.ca, a3moss@uwaterloo.ca, tdelisle@uwaterloo.ca, brice.dobry@huawei.com"
     314
     315        //send email notification
     316        emailext body: email_body, subject: email_subject, to: email_to, attachLog: log
     317}
  • Makefile.am

    r1b5c81ed rf80e0218  
    1111## Created On       : Sun May 31 22:14:18 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Jan 25 22:16:13 2016
    14 ## Update Count     : 10
     13## Last Modified On : Fri Jun 17 14:56:18 2016
     14## Update Count     : 13
    1515###############################################################################
    1616
     
    2020BACKEND_CC = @BACKEND_CC@               # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
    2121
    22 MAINTAINERCLEANFILES = lib/* bin/*
     22MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
  • Makefile.in

    r1b5c81ed rf80e0218  
    5151CONFIG_CLEAN_FILES =
    5252CONFIG_CLEAN_VPATH_FILES =
     53AM_V_GEN = $(am__v_GEN_@AM_V@)
     54am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     55am__v_GEN_0 = @echo "  GEN   " $@;
     56AM_V_at = $(am__v_at_@AM_V@)
     57am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     58am__v_at_0 = @
    5359SOURCES =
    5460DIST_SOURCES =
     
    111117ALLOCA = @ALLOCA@
    112118AMTAR = @AMTAR@
     119AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    113120AUTOCONF = @AUTOCONF@
    114121AUTOHEADER = @AUTOHEADER@
     
    118125CC = @CC@
    119126CCDEPMODE = @CCDEPMODE@
     127CFA_BACKEND_CC = @CFA_BACKEND_CC@
    120128CFA_BINDIR = @CFA_BINDIR@
    121129CFA_INCDIR = @CFA_INCDIR@
     
    136144EGREP = @EGREP@
    137145EXEEXT = @EXEEXT@
    138 GCC_PATH = @GCC_PATH@
    139146GREP = @GREP@
    140147INSTALL = @INSTALL@
     
    215222SUBDIRS = src/driver src src/libcfa     # order important, src before libcfa because cfa-cpp used to build prelude
    216223EXTRA_DIST = Docs                       # non-source files
    217 MAINTAINERCLEANFILES = lib/* bin/*
     224MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
    218225all: config.h
    219226        $(MAKE) $(AM_MAKEFLAGS) all-recursive
  • aclocal.m4

    r1b5c81ed rf80e0218  
    899899AC_MSG_RESULT(yes)])
    900900
     901# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
     902#
     903# This file is free software; the Free Software Foundation
     904# gives unlimited permission to copy and/or distribute it,
     905# with or without modifications, as long as this notice is preserved.
     906
     907# serial 2
     908
     909# AM_SILENT_RULES([DEFAULT])
     910# --------------------------
     911# Enable less verbose build rules; with the default set to DEFAULT
     912# (`yes' being less verbose, `no' or empty being verbose).
     913AC_DEFUN([AM_SILENT_RULES],
     914[AC_ARG_ENABLE([silent-rules],
     915[  --enable-silent-rules          less verbose build output (undo: `make V=1')
     916  --disable-silent-rules         verbose build output (undo: `make V=0')])
     917case $enable_silent_rules in
     918yes) AM_DEFAULT_VERBOSITY=0;;
     919no)  AM_DEFAULT_VERBOSITY=1;;
     920*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
     921esac
     922dnl
     923dnl A few `make' implementations (e.g., NonStop OS and NextStep)
     924dnl do not support nested variable expansions.
     925dnl See automake bug#9928 and bug#10237.
     926am_make=${MAKE-make}
     927AC_CACHE_CHECK([whether $am_make supports nested variables],
     928   [am_cv_make_support_nested_variables],
     929   [if AS_ECHO([['TRUE=$(BAR$(V))
     930BAR0=false
     931BAR1=true
     932V=1
     933am__doit:
     934        @$(TRUE)
     935.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
     936  am_cv_make_support_nested_variables=yes
     937else
     938  am_cv_make_support_nested_variables=no
     939fi])
     940if test $am_cv_make_support_nested_variables = yes; then
     941  dnl Using `$V' instead of `$(V)' breaks IRIX make.
     942  AM_V='$(V)'
     943  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
     944else
     945  AM_V=$AM_DEFAULT_VERBOSITY
     946  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
     947fi
     948AC_SUBST([AM_V])dnl
     949AM_SUBST_NOTMAKE([AM_V])dnl
     950AC_SUBST([AM_DEFAULT_V])dnl
     951AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
     952AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
     953AM_BACKSLASH='\'
     954AC_SUBST([AM_BACKSLASH])dnl
     955_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
     956])
     957
    901958# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
    902959#
  • config.h.in

    r1b5c81ed rf80e0218  
    11/* config.h.in.  Generated from configure.ac by autoheader.  */
     2
     3/* Location of include files. */
     4#undef CFA_BACKEND_CC
    25
    36/* Location of cfa command. */
     
    2023/* Define to 1 if using `alloca.c'. */
    2124#undef C_ALLOCA
    22 
    23 /* Path/name of C compiler. */
    24 #undef GCC_PATH
    2525
    2626/* Define to 1 if you have `alloca', as a function or macro. */
  • configure

    r1b5c81ed rf80e0218  
    643643CFA_INCDIR
    644644CFA_PREFIX
     645CFA_BACKEND_CC
    645646BACKEND_CC
    646 GCC_PATH
    647647MAINT
    648648MAINTAINER_MODE_FALSE
     
    671671INSTALL_SCRIPT
    672672INSTALL_PROGRAM
     673AM_BACKSLASH
     674AM_DEFAULT_VERBOSITY
     675AM_DEFAULT_V
     676AM_V
    673677target_alias
    674678host_alias
     
    712716ac_user_opts='
    713717enable_option_checking
     718enable_silent_rules
    714719enable_maintainer_mode
    715720with_backend_compiler
     
    13461351  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
    13471352  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
     1353  --enable-silent-rules          less verbose build output (undo: `make V=1')
     1354  --disable-silent-rules         verbose build output (undo: `make V=0')
    13481355  --disable-maintainer-mode  disable make rules and dependencies not useful
    13491356                          (and sometimes confusing) to the casual installer
     
    24082415ac_config_headers="$ac_config_headers config.h"
    24092416
     2417# Check whether --enable-silent-rules was given.
     2418if test "${enable_silent_rules+set}" = set; then :
     2419  enableval=$enable_silent_rules;
     2420fi
     2421
     2422case $enable_silent_rules in
     2423yes) AM_DEFAULT_VERBOSITY=0;;
     2424no)  AM_DEFAULT_VERBOSITY=1;;
     2425*)   AM_DEFAULT_VERBOSITY=1;;
     2426esac
     2427am_make=${MAKE-make}
     2428{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
     2429$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
     2430if ${am_cv_make_support_nested_variables+:} false; then :
     2431  $as_echo_n "(cached) " >&6
     2432else
     2433  if $as_echo 'TRUE=$(BAR$(V))
     2434BAR0=false
     2435BAR1=true
     2436V=1
     2437am__doit:
     2438        @$(TRUE)
     2439.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
     2440  am_cv_make_support_nested_variables=yes
     2441else
     2442  am_cv_make_support_nested_variables=no
     2443fi
     2444fi
     2445{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
     2446$as_echo "$am_cv_make_support_nested_variables" >&6; }
     2447if test $am_cv_make_support_nested_variables = yes; then
     2448    AM_V='$(V)'
     2449  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
     2450else
     2451  AM_V=$AM_DEFAULT_VERBOSITY
     2452  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
     2453fi
     2454AM_BACKSLASH='\'
     2455
    24102456
    24112457if test "x${CXXFLAGS}" = "x"; then
     
    29222968# Check whether --with-backend-compiler was given.
    29232969if test "${with_backend_compiler+set}" = set; then :
    2924   withval=$with_backend_compiler; backcompiler=$withval
    2925 else
    2926   backcompiler=""
    2927 fi
    2928 
    2929   if test x$backcompiler != x; then
    2930         cat >>confdefs.h <<_ACEOF
    2931 #define GCC_PATH "${backcompiler}"
    2932 _ACEOF
    2933 
    2934         BACKEND_CC=${backcompiler}
    2935   else
     2970  withval=$with_backend_compiler; backendcompiler=$withval
     2971else
     2972  backendcompiler=""
     2973fi
     2974
     2975if test "x$backendcompiler" != x; then
     2976        BACKEND_CC=${backendcompiler}
     2977else
    29362978        # Extract the first word of "gcc", so it can be a program name with args.
    29372979set dummy gcc; ac_word=$2
    29382980{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
    29392981$as_echo_n "checking for $ac_word... " >&6; }
    2940 if ${ac_cv_path_GCC_PATH+:} false; then :
     2982if ${ac_cv_path_BACKEND_CC+:} false; then :
    29412983  $as_echo_n "(cached) " >&6
    29422984else
    2943   case $GCC_PATH in
     2985  case $BACKEND_CC in
    29442986  [\\/]* | ?:[\\/]*)
    2945   ac_cv_path_GCC_PATH="$GCC_PATH" # Let the user override the test with a path.
     2987  ac_cv_path_BACKEND_CC="$BACKEND_CC" # Let the user override the test with a path.
    29462988  ;;
    29472989  *)
     
    29532995    for ac_exec_ext in '' $ac_executable_extensions; do
    29542996  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    2955     ac_cv_path_GCC_PATH="$as_dir/$ac_word$ac_exec_ext"
     2997    ac_cv_path_BACKEND_CC="$as_dir/$ac_word$ac_exec_ext"
    29562998    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
    29572999    break 2
     
    29613003IFS=$as_save_IFS
    29623004
    2963   test -z "$ac_cv_path_GCC_PATH" && ac_cv_path_GCC_PATH="N/A"
    29643005  ;;
    29653006esac
    29663007fi
    2967 GCC_PATH=$ac_cv_path_GCC_PATH
    2968 if test -n "$GCC_PATH"; then
    2969   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCC_PATH" >&5
    2970 $as_echo "$GCC_PATH" >&6; }
     3008BACKEND_CC=$ac_cv_path_BACKEND_CC
     3009if test -n "$BACKEND_CC"; then
     3010  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BACKEND_CC" >&5
     3011$as_echo "$BACKEND_CC" >&6; }
    29713012else
    29723013  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     
    29753016
    29763017
    2977         if test "$GCC_PATH" = "N/A"; then
     3018        if test "x$BACKEND_CC" = "x"; then
    29783019                as_fn_error $? "some version of gcc is needed. Get it at ftp://ftp.gnu.org" "$LINENO" 5
    29793020                exit 1
    29803021        fi
     3022fi
    29813023
    29823024cat >>confdefs.h <<_ACEOF
    2983 #define GCC_PATH "${GCC_PATH}"
    2984 _ACEOF
    2985 
    2986         BACKEND_CC=${GCC_PATH}
    2987   fi
     3025#define CFA_BACKEND_CC "${BACKEND_CC}"
     3026_ACEOF
     3027
    29883028
    29893029
     
    57575797
    57585798
    5759 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/libcfa/Makefile"
     5799ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/libcfa/Makefile"
    57605800
    57615801
     
    65036543    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
    65046544    "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;;
     6545    "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
    65056546    "src/libcfa/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcfa/Makefile" ;;
    65066547
  • configure.ac

    r1b5c81ed rf80e0218  
    77#AC_CONFIG_SRCDIR([src/main.cc])
    88AC_CONFIG_HEADERS([config.h])
     9AM_SILENT_RULES([no])
    910
    1011if test "x${CXXFLAGS}" = "x"; then
     
    1920# Installation paths
    2021
    21 AC_ARG_WITH(backend-compiler,
    22             [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
    23             backcompiler=$withval, backcompiler="")
    24   if test x$backcompiler != x; then
    25         AC_DEFINE_UNQUOTED(GCC_PATH, "${backcompiler}")
    26         BACKEND_CC=${backcompiler}
    27   else
    28         AC_PATH_PROG(GCC_PATH, gcc, N/A)
    29         if test "$GCC_PATH" = "N/A"; then
     22AC_ARG_WITH(backend-compiler,
     23        [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
     24        backendcompiler=$withval, backendcompiler="")
     25if test "x$backendcompiler" != x; then
     26        BACKEND_CC=${backendcompiler}
     27else
     28        AC_PATH_PROG(BACKEND_CC, gcc, [])
     29        if test "x$BACKEND_CC" = "x"; then
    3030                AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
    3131                exit 1
    3232        fi
    33         AC_DEFINE_UNQUOTED(GCC_PATH, "${GCC_PATH}", [Path/name of C compiler.])
    34         BACKEND_CC=${GCC_PATH}
    35   fi
    36 AC_SUBST(BACKEND_CC)
     33fi
     34AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${BACKEND_CC}", [Location of include files.])
     35AC_SUBST(CFA_BACKEND_CC)
    3736
    3837if test "x$prefix" = "xNONE"; then
     
    4039else
    4140        cfa_prefix=${prefix}
    42 fi 
     41fi
    4342AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa install.])
    4443AC_SUBST(CFA_PREFIX, ${cfa_prefix})
     
    4847else
    4948        cfa_incdir=${includedir}
    50 fi 
     49fi
    5150AC_DEFINE_UNQUOTED(CFA_INCDIR, "${cfa_incdir}", [Location of include files.])
    5251AC_SUBST(CFA_INCDIR, ${cfa_incdir})
     
    5655else
    5756        cfa_bindir=${bindir}
    58 fi 
     57fi
    5958AC_DEFINE_UNQUOTED(CFA_BINDIR, "${cfa_bindir}", [Location of cfa command.])
    6059AC_SUBST(CFA_BINDIR, ${cfa_bindir})
     
    6463else
    6564        cfa_libdir=${libdir}
    66 fi 
     65fi
    6766AC_DEFINE_UNQUOTED(CFA_LIBDIR, "${cfa_libdir}", [Location of cc1 and cfa-cpp commands.])
    6867AC_SUBST(CFA_LIBDIR, ${cfa_libdir})
     
    107106        src/Makefile
    108107        src/examples/Makefile
     108        src/tests/Makefile
    109109        src/libcfa/Makefile
    110110        ])
  • doc/LaTeXmacros/common.tex

    r1b5c81ed rf80e0218  
    1111%% Created On       : Sat Apr  9 10:06:17 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Sat Apr  9 10:06:39 2016
    14 %% Update Count     : 1
     13%% Last Modified On : Mon Jun 20 09:35:20 2016
     14%% Update Count     : 178
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
    1717%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1818
     19\setlength{\textheight}{9in}
     20%\oddsidemargin 0.0in
     21\renewcommand{\topfraction}{0.8}        % float must be greater than X of the page before it is forced onto its own page
     22\renewcommand{\bottomfraction}{0.8}     % float must be greater than X of the page before it is forced onto its own page
     23\renewcommand{\floatpagefraction}{0.8}  % float must be greater than X of the page before it is forced onto its own page
     24\renewcommand{\textfraction}{0.0}       % the entire page maybe devoted to floats with no text on the page at all
     25
     26\lefthyphenmin=4
     27\righthyphenmin=4
     28
     29\usepackage{pslatex}                            % reduce size of san serif font
     30
     31\usepackage[ignoredisplayed]{enumitem}  % do not affect trivlist
     32\setlist{labelsep=1ex}% global
     33\setlist[itemize]{topsep=0.5ex,parsep=0.25ex,itemsep=0.25ex,listparindent=\parindent,leftmargin=\parindent}% global
     34\setlist[itemize,1]{label=\textbullet}% local
     35%\renewcommand{\labelitemi}{{\raisebox{0.25ex}{\footnotesize$\bullet$}}}
     36\setlist[enumerate]{listparindent=\parindent}% global
     37\setlist[enumerate,2]{leftmargin=\parindent,labelsep=*,align=parleft,label=\alph*.}% local
     38\setlist[description]{listparindent=\parindent,leftmargin=\parindent,labelsep=*}
     39
    1940% Names used in the document.
    2041
    21 \newcommand{\CFA}{C$\mathbf\forall$\xspace}                             % set language symbolic name
    22 \newcommand{\CFL}{Cforall\xspace}                                               % set language text name
    23 \newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
     42\newcommand{\CFA}{C$\mathbf\forall$\xspace}              % set language symbolic name
     43\newcommand{\CFL}{Cforall\xspace}                        % set language text name
     44\newcommand{\CC}{\rm C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
    2445\def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name)
    2546
     
    2748
    2849\makeatletter
     50% parindent is relative, i.e., toggled on/off in environments like itemize, so store the value for
     51% use rather than use \parident directly.
     52\newlength{\parindentlnth}
     53\setlength{\parindentlnth}{\parindent}
     54
    2955% allow escape sequence in lstinline
    3056%\usepackage{etoolbox}
    3157%\patchcmd{\lsthk@TextStyle}{\let\lst@DefEsc\@empty}{}{}{\errmessage{failed to patch}}
    3258
    33 % make fontsize "small" slightly larger, specifically for san serif (helvetica) in program code
    34 \renewcommand\small{%
    35    \@setfontsize\small{8.5}{11}%
    36    \abovedisplayskip 8.5pt \@plus 3pt \@minus 4pt
    37    \abovedisplayshortskip \z@ \@plus 2pt
    38    \belowdisplayshortskip 4pt \@plus 2pt \@minus 2pt
    39    \def\@listi{\leftmargin\leftmargini
    40                \topsep 4pt \@plus 2pt \@minus 2pt
    41                \parsep 2pt \@pluspt \@minuspt
    42                \itemsep \parsep}%
    43    \belowdisplayskip \abovedisplayskip
    44 }
    45 \usepackage{relsize}                                                                    % must be after change to small or selects old size
     59\usepackage{pslatex}                                                                    % reduce size of san serif font
     60\usepackage{relsize}                                    % must be after change to small or selects old size
    4661
    4762% reduce size of chapter/section titles
     
    6681    \vskip 50\p@
    6782  }}
    68 \renewcommand\section{\@startsection{section}{1}{\z@}{-3.0ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\large\bfseries}}
    69 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}{-2.5ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\normalsize\bfseries}}
     83\renewcommand\section{\@startsection{section}{1}{\z@}{-3.5ex \@plus -1ex \@minus -.2ex}{1.75ex \@plus .2ex}{\normalfont\large\bfseries}}
     84\renewcommand\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex \@plus -1ex \@minus -.2ex}{1.5ex \@plus .2ex}{\normalfont\normalsize\bfseries}}
    7085\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.5ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\normalsize\bfseries}}
    7186\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{-2.0ex \@plus -1ex \@minus -.2ex}{-1em}{\normalfont\normalsize\bfseries}}
     
    7590\newcommand{\definition}[1]{\textbf{\hyperpage{#1}}}
    7691\newcommand{\see}[1]{\emph{see} #1}
    77 
    78 % reduce bullet size and spacing for "itemize" macro
    79 \renewcommand{\labelitemi}{{\raisebox{0.25ex}{\footnotesize$\bullet$}}}
    80 \renewenvironment{itemize}{\begin{list}{\labelitemi}{\topsep=5pt\itemsep=5pt\parsep=0pt}}{\end{list}}
    8192
    8293% Define some commands that produce formatted index entries suitable for cross-references.
     
    109120\newcommand{\@sIndex}[2][\@empty]{#2\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}
    110121
     122\newcommand{\Indexc}[1]{\lstinline$#1$\index{#1@\lstinline$#1$}}
     123\newcommand{\indexc}[1]{\index{#1@\lstinline$#1$}}
     124
    111125\newcommand{\newtermFontInline}{\emph}
    112126\newcommand{\newterm}{\@ifstar\@snewterm\@newterm}
     
    116130
    117131\newenvironment{quote2}{%
    118         \list{}{\lstset{resetmargins=true}\leftmargin=\parindent\rightmargin\leftmargin}%
     132        \list{}{\lstset{resetmargins=true,aboveskip=0pt,belowskip=0pt}\topsep=4pt\parsep=0pt\leftmargin=\parindent\rightmargin\leftmargin}%
    119133        \item\relax
    120134}{%
     
    122136}% quote2
    123137\newenvironment{rationale}{%
    124   \begin{quotation}\noindent$\Box$\enspace
     138  \begin{quote2}\noindent$\Box$\enspace
    125139}{%
    126   \hfill\enspace$\Box$\end{quotation}
     140  \hfill\enspace$\Box$\end{quote2}
    127141}%
    128142
    129143% blocks and titles
    130144\newcommand{\define}[1]{\emph{#1\/}\index{#1}}
    131 \newcommand{\rewrite}{\(\Rightarrow\)}
    132145\newcommand{\rewriterules}{\paragraph{Rewrite Rules}~\par\noindent}
    133146\newcommand{\examples}{\paragraph{Examples}~\par\noindent}
     
    137150
    138151% BNF macros
    139 \def\syntax{\paragraph{Syntax}\trivlist\parindent=.5in\item[\hskip.5in]}
    140 \let\endsyntax=\endtrivlist
    141 \newcommand{\lhs}[1]{\par{\emph{#1:}}\index{#1@{\emph{#1}}|italic}}
    142 \newcommand{\rhs}{\hfil\break\hbox{\hskip1in}}
    143 \newcommand{\oldlhs}[1]{\emph{#1: \ldots}\index{#1@{\emph{#1}}|italic}}
    144 \newcommand{\nonterm}[1]{\emph{#1\/}\index{#1@{\emph{#1}}|italic}}
     152\newenvironment{syntax}{
     153\paragraph{Syntax}
     154\begin{quote2}
     155\begin{description}[noitemsep,leftmargin=\parindentlnth]
     156}{
     157\end{description}
     158\end{quote2}
     159}
     160% \def\syntax{\paragraph{Syntax}\trivlist\parindent=.5in\item[\hskip.5in]}
     161%\let\endsyntax=\endtrivlist
     162\newcommand{\lhs}[1]{\item[\emph{#1:}\index{#1@{\emph{#1}}|italic}]~\ignorespaces}
     163\newcommand{\oldlhs}[1]{\item[\emph{#1:}\index{#1@{\emph{#1}}|italic}~\dots]~}
     164\newcommand{\rhs}{\hfil\newline}
     165\newcommand{\nonterm}[1]{\emph{#1}\index{#1@{\emph{#1}}|italic}}
    145166\newcommand{\opt}{$_{opt}$\ }
    146167
     
    179200                fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,otype,restrict,_Static_assert,
    180201                _Thread_local,throw,throwResume,trait,try,typeof,__typeof,__typeof__,},
    181         moredelim=**[is][\color{red}]{`}{`}, % red highlighting of program text
    182202}%
    183203
     
    185205language=CFA,
    186206columns=flexible,
    187 basicstyle=\sf\relsize{-1},
     207basicstyle=\linespread{0.9}\sf,
     208stringstyle=\tt,
    188209tabsize=4,
    189 xleftmargin=\parindent,
    190 escapechar=@,
     210xleftmargin=\parindentlnth,
     211extendedchars=true,
     212escapechar=§,
    191213mathescape=true,
    192214keepspaces=true,
    193215showstringspaces=false,
    194216showlines=true,
    195 aboveskip=6pt,
    196 belowskip=4pt,
    197 literate={\\`}{\raisebox{0.3ex}{\ttfamily\upshape \hspace*{-2pt}`}}1, % escape \`, otherwise used for red highlighting
     217aboveskip=4pt,
     218belowskip=3pt,
     219moredelim=**[is][\color{red}]{®}{®}, % red highlighting
     220moredelim=**[is][\color{blue}]{ß}{ß}, % blue highlighting
     221moredelim=**[is][\color{OliveGreen}]{¢}{¢}, % green highlighting
     222moredelim=[is][\lstset{keywords={}}]{¶}{¶}, % temporarily turn off keywords
     223% replace/adjust listing characters that look bad in sanserif
     224literate={-}{\raisebox{-0.15ex}{\texttt{-}}}1 {^}{\raisebox{0.6ex}{$\scriptscriptstyle\land\,$}}1
     225        {~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1 {_}{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}1 {`}{\ttfamily\upshape\hspace*{-0.1ex}`}1
     226        {<-}{$\leftarrow$}2 {=>}{$\Rightarrow$}2 {...}{$\dots$}2,
    198227}%
    199228
    200 \makeatletter
    201 % replace/adjust listings characters that look bad in sanserif
    202 \lst@CCPutMacro
    203 \lst@ProcessOther{"22}{\lst@ttfamily{"}{\raisebox{0.3ex}{\ttfamily\upshape "}}} % replace double quote
    204 \lst@ProcessOther{"27}{\lst@ttfamily{'}{\raisebox{0.3ex}{\ttfamily\upshape '\hspace*{-2pt}}}} % replace single quote
    205 \lst@ProcessOther{"2D}{\lst@ttfamily{-}{\ttfamily\upshape -}} % replace minus
    206 \lst@ProcessOther{"3C}{\lst@ttfamily{<}{\texttt{<}}} % replace less than
    207 \lst@ProcessOther{"3E}{\lst@ttfamily{<}{\texttt{>}}} % replace greater than
    208 \lst@ProcessOther{"5E}{\raisebox{0.4ex}{$\scriptstyle\land\,$}} % replace circumflex
    209 \lst@ProcessOther{"5F}{\lst@ttfamily{\char95}{{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}}} % replace underscore
    210 \lst@ProcessOther{"60}{\lst@ttfamily{`}{\raisebox{0.3ex}{\ttfamily\upshape \hspace*{-2pt}`}}} % replace backquote
    211 \lst@ProcessOther{"7E}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}} % replace tilde
    212 %\lst@ProcessOther{"7E}{\raisebox{-.4ex}[1ex][0pt]{\textasciitilde}} % lower tilde
    213 \@empty\z@\@empty % NECESSARY DO NOT REMOVE
    214 \makeatother
     229\lstMakeShortInline©    % single-character for \lstinline
    215230
    216231% Local Variables: %
  • doc/bibliography/cfa.bib

    • Property mode changed from 120000 to 100644
    r1b5c81ed rf80e0218  
    1 /usr/local/bibliographies/pl.bib
     1% Conventions: uncross-referenced entries appear first, then
     2%    cross-referenced entries.  In both groups, entries are sorted by their
     3%    title field.  Lines like "% A" exist to speed searches.  The main
     4%    paper on a language uses the language name as the citation key.  Other
     5%    papers use ``<language name>:'' as a prefix.  Please consider leaving
     6%    keyword lists and an abstract or comment for future generations, and
     7%    put some identification in a contributer field.
     8
     9%    Predefined journal names:
     10%  acmcs: Computing Surveys             acta: Acta Infomatica
     11%  cacm: Communications of the ACM
     12%  ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal
     13%  ieeese: IEEE Trans. on Soft. Eng.    ieeetc: IEEE Trans. on Computers
     14%  ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits
     15%  ipl: Information Processing Letters  jacm: Journal of the ACM
     16%  jcss: J. Computer & System Sciences  scp: Science of Comp. Programming
     17%  sicomp: SIAM J. on Computing         tocs: ACM Trans. on Comp. Systems
     18%  tods: ACM Trans. on Database Sys.    tog: ACM Trans. on Graphics
     19%  toms: ACM Trans. on Math. Software   toois: ACM Trans. on Office Info. Sys.
     20%  toplas: ACM Trans. on Prog. Lang. & Sys.
     21%  tcs: Theoretical Computer Science
     22@string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
     23@string{ieeese="IEEE Transactions on Software Engineering"}
     24@string{spe="Software---\-Practice and Experience"}
     25@string{sigplan="SIGPLAN Notices"}
     26@string{joop="Journal of Object-Oriented Programming"}
     27@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
     28@string{osr="Operating Systems Review"}
     29@string{pldi="Programming Language Design and Implementation"}
     30
     31% A
     32
     33@incollection{ABC++,
     34    keywords    = {concurrency, parallel, distributed, C++},
     35    contributer = {pabuhr@plg},
     36    author      = {William G. O'Farrell and Frank Ch. Eigler and S. David Pullara and Gregory V. Wilson },
     37    title       = {{ABC}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     38    editor      = {Gregory V. Wilson and Paul Lu},
     39    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     40    publisher   = {MIT Press},
     41    series      = {Scientific and Engineering Computation Series},
     42    year        = 1996,
     43    pages       = {1-42},
     44}
     45
     46@techreport{CL90abstract,
     47    keywords    = {},
     48    contributer = {gjditchfield@plg},
     49    author      = {Luca Cardelli and Xavier Leroy},
     50    title       = {Abstract Types and the Dot Notation},
     51    institution = {Systems Research Center},
     52    year        = 1990,
     53    address     = {130 Lytton Avenue, Palo Alto, CA  94301},
     54    number      = 56,
     55    summary     = {
     56        The existential types of Mitchell and Plotkin \cite{atet} model
     57        abstract types, but their ``open'' notation is unlike the usual dot
     58        notation used in programming languages.  This paper gives
     59        translations between the ``open'' and ``dot'' forms, and suggests
     60        extensions for nested and for parameterized abstractions.
     61    }
     62}
     63
     64@article{atet,
     65    keywords    = {lambda calculus, polymorphism},
     66    contributer = {gjditchfield@plg},
     67    author      = {John C. Mitchell and Gordon D. Plotkin},
     68    title       = {Abstract Types have Existential Type},
     69    journal     = toplas,
     70    year        = 1988,
     71    month       = jul, volume = 10, number = 3, pages = {470-502},
     72    abstract    = {
     73        Abstract data type declarations appear in typed programming
     74        languages like Ada, Alphard, CLU and ML.  This form of declaration
     75        binds a list of identifiers to a type with associated operations, a
     76        composite ``value'' we call a {\em data algebra}.  We use a
     77        second-order typed lambda calculus SOL to show how data algebras
     78        may be given types, passed as parameters, and returned as results of
     79        function calls.  In the process, we discuss the semantics of
     80        abstract data type declarations and review a connection between
     81        typed programming languages and constructive logic.
     82    }
     83}
     84
     85@article{alphard:intro,
     86    keywords    = {encapsulation, data abstraction},
     87    contributer = {gjditchfield@plg},
     88    author      = {Wm. A. Wulf and Ralph L. London and Mary Shaw},
     89    title       = {Abstraction and Verification in Alphard: Introduction to Language and Methodology},
     90    journal     = ieeese,
     91    year        = 1976,
     92    month       = dec, volume = {SE-2}, number = 4, pages = {253-265},
     93    note        = {Reprinted in \cite{alphard}.},
     94    abstract    = {
     95        Alphard is a programming language whose goals include supporting
     96        both the development of well-structured programs and the formal
     97        verification of these programs.  This paper attempts to capture the
     98        symbiotic influence of these two goals on the design of the
     99        language.  To that end the language description is interleaved with
     100        the presentation of a proof technique and discudssion of
     101        programming methodology.  Examples to illustrate both the language
     102        and the verification technique are included.
     103    }
     104}
     105
     106@book{Hilfinger83,
     107    keywords    = {ada},
     108    author      = {Paul N. Hilfinger},
     109    title       = {Abstraction Mechanisms and Language Design},
     110    publisher   = {MIT Press},
     111    series      = {ACM Distinguished Dissertations},
     112    year        = 1983,
     113}
     114
     115@incollection{Lavender96,
     116    author      = {R. Greg Lavender and Douglas C. Schmidt},
     117    chapter     = {Active Object: An Object Behavioral Pattern for Concurrent Programming},
     118    title       = {Pattern Languages of Program Design 2},
     119    editor      = {John M. Vlissides and James O. Coplien and Norman L. Kerth},
     120    year        = 1996,
     121    pages       = {483-499},
     122    publisher   = {Addison-Wesley Longman Publishing Co., Inc.},
     123    address     = {Boston, MA, USA},
     124}
     125
     126@article{Nierstrasz87,
     127    keywords    = {Hybrid, active objects, object-oriented languages,
     128                  object-based languages, delegation, concurrency},
     129    contributer = {pabuhr@plg},
     130    author      = {O. M. Nierstrasz},
     131    title       = {Active Objects in {Hybrid}},
     132    journal     = sigplan,
     133    volume      = 22,
     134    number      = 12,
     135    month       = dec,
     136    year        = 1987,
     137    pages       = {243-253},
     138    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
     139    abstract    = {
     140        Most object-oriented languages are strong on reusability or on
     141        strong-typing, but weak on concurrency.  In response to this gap,
     142        we are developing {\it Hybrid}, an object-oriented language in which
     143        objects are the active entities.  Objects in Hybrid are organized
     144        into {\it domains}, and concurrent executions into {\it activities}.
     145        All object communications are based on remote procedure calls.
     146        Unstructured {\it sends\/} and {\it accepts\/} are forbidden.  To
     147        this the mechanisms of {\it delegation\/} and {\it delay queues\/}
     148        are added to enable switching and triggering of activities.
     149        Concurrent subactivities and atomic actions are provided for
     150        compactness and simplicity.  We show how solutions to many important
     151        concurrent problems [sic], such as pipelining, constraint management
     152        and ``administration'' can be compactly expressed using these
     153        mechanisms.
     154   },
     155   comment      = {Mentions Thoth in reference to delegation}
     156}
     157
     158@book{Actors,
     159    keywords    = {actors, concurrency},
     160    contributer = {pabuhr@plg},
     161    author      = {Gul A. Agha},
     162    title       = {Actors: A Model of Concurrent Computation in Distributed Systems},
     163    publisher   = {MIT Press, Cambridge, Mass.},
     164    year        = 1986
     165}
     166
     167@article{polymorphImpl,
     168    keywords    = {Napier88},
     169    contributer = {gjditchfield@plg},
     170    author      = {R. Morrison and A. Dearle and R. C. H. Connor and A. L. Brown},
     171    title       = {An Ad Hoc Approach to the Implementation of Polymorphism},
     172    journal     = toplas,
     173    year        = 1991,
     174    month       = jul,
     175    volume      = 13,
     176    number      = 3,
     177    pages       = {342-371},
     178    abstract    = {
     179        Polymorphic abstraction provides the ability to write programs that
     180        are independent of the form of the data over which they operate.
     181        There are a number of different categories of polymorphic
     182        expression---ad hoc and universal, which includes parametric and
     183        inclusion---all of which have many advantages in terms of code
     184        reuse and software economics.  It has proved difficult to provide
     185        efficient implementations of polymorphism.  Here, we address this
     186        problem and describe a new technique that can implement all forms
     187        of polymorphism, use a conventional machine architecture, and
     188        support nonuniform data representations.  Furthermore, the method
     189        ensures that any extra cost of implementation applies to
     190        polymorphic forms only, and allows such polymorphic forms to
     191        persist over program invocations.
     192    },
     193    summary     = {
     194        They give three ways to implement polymorphism: {\em textual
     195        polymorphism}, which seems to be template instantiation, {\em
     196        uniform polymorphism}, which they explain badly, and {\em tagged
     197        polymorphism}, where object code performs type tests.
     198
     199        They use first-class procedures to implement polymorphism: routines
     200        with type parameters are implemented as curried routines that
     201        return a nested routine that refers to the type parameter.
     202    }
     203}
     204
     205@article{dim:ada,
     206    keywords    = {Dimensional Analysis, Ada},
     207    contributer = {gjditchfield@plg},
     208    author      = {Paul N. Hilfinger},
     209    title       = {An {Ada} Package for Dimensional Analysis},
     210    journal     = toplas,
     211    month       = apr,
     212    year        = 1988,
     213    volume      = 10,
     214    number      = 2,
     215    pages       = {189-203},
     216}
     217
     218@mastersthesis{Younger91,
     219    keywords    = {concurrency, C++, postponing requests},
     220    contributer = {pabuhr@plg},
     221    author      = {Brian M. Younger},
     222    title       = {Adding Concurrency to {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     223    school      = {University of Waterloo},
     224    year        = 1991,
     225    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     226}
     227
     228@inproceedings{Buhr92c,
     229    keywords    = {concurrency},
     230    contributer = {pabuhr@plg},
     231    author      = {Peter A. Buhr and Glen Ditchfield},
     232    title       = {Adding Concurrency to a Programming Language},
     233    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
     234    organization= {USENIX Association},
     235    address     = {Portland, Oregon, U.S.A.},
     236    month       = aug,
     237    year        = 1992,
     238    pages       = {207-224},
     239}
     240
     241@article{Buhr89b,
     242    keywords    = {concurrency, C++},
     243    contributer = {pabuhr@plg},
     244    author      = {P. A. Buhr and Glen Ditchfield and C. R. Zarnke},
     245    title       = {Adding Concurrency to a Statically Type-Safe Object-Oriented Programming Language},
     246    journal     = sigplan,
     247    volume      = 24,
     248    number      = 4,
     249    month       = apr,
     250    year        = 1989,
     251    pages       = {18-21},
     252    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming, Sept. 26--27, 1988, San Diego, California, U.S.A.},
     253}
     254
     255@article{Knuth66,
     256    keywords    = {N-thread software-solution mutual exclusion},
     257    contributer = {pabuhr@plg},
     258    author      = {Donald E. Knuth},
     259    title       = {Additional Comments on a Problem in Concurrent Programming Control},
     260    journal     = cacm,
     261    month       = may,
     262    year        = 1966,
     263    volume      = 9,
     264    number      = 5,
     265    pages       = {321-322},
     266    note        = {Letter to the Editor}
     267}
     268
     269@article{DeBruijn67,
     270    keywords    = {N-thread software-solution mutual exclusion},
     271    contributer = {pabuhr@plg},
     272    author      = {Nicolaas Govert de Bruijn},
     273    title       = {Additional Comments on a Problem in Concurrent Programming Control},
     274    journal     = cacm,
     275    month       = mar,
     276    year        = 1967,
     277    volume      = 10,
     278    number      = 3,
     279    pages       = {137-138},
     280    note        = {letter to the Editor}
     281}
     282
     283@phdthesis{Krischer10,
     284    author      = {Roy Krischer},
     285    title       = {Advanced Concepts in Asynchronous Exception Handling},
     286    school      = {University of Waterloo},
     287    year        = 2010,
     288    month       = dec,
     289    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     290    optnote     = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
     291    note        = {\href{http://uwspace.uwaterloo.ca/bitstream/10012/5751/1/Krischer_Roy.pdf}{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
     292}
     293
     294@article{Buhr00a,
     295    keywords    = {exception handling},
     296    contributer = {pabuhr@plg},
     297    author      = {Peter A. Buhr and W. Y. Russell Mok},
     298    title       = {Advanced Exception Handling Mechanisms},
     299    journal     = ieeese,
     300    volume      = 26,
     301    number      = 9,
     302    month       = sep,
     303    year        = 2000,
     304    pages       = {820-836},
     305}
     306
     307@book{Richter97,
     308    keywords    = {Win32, threads},
     309    author      = {Jeffrey M. Richter},
     310    title       = {Advanced Windows},
     311    publisher   = {Microsoft Press},
     312    year        = 1997,
     313    edition     = {third},
     314}
     315
     316@article{Francez77,
     317    keywords    = {parameter passing, named/positional arguments},
     318    contributer = {pabuhr@plg},
     319    author      = {Nissim Francez},
     320    title       = {Another Advantage of Key word Notation for Parameter Communication with Subprograms},
     321    journal     = cacm,
     322    volume      = 20,
     323    number      = 8,
     324    month       = aug,
     325    year        = 1977,
     326    pages       = {604-605},
     327}
     328
     329@article{Algol60,
     330    keywords    = {Algol60},
     331    contributer = {pabuhr@plg},
     332    author      = {J. W. Backus and F. L. Bauer and J. Green and C. Katz and
     333                   J. McCarthy and P. Naur and A. J. Perlis and H. Rutishauser and K. Samuelson
     334                   and B. Vauquois and J.H. Wegstein and A. van Wijngaarden and M. Woodger},
     335    title       = {Revised Report on the Algorithmic Language Algol 60},
     336    editor      = {Peter Nauer},
     337    journal     = cacm,
     338    volume      = 6,
     339    number      = 1,
     340    month       = jan,
     341    year        = 1963,
     342    pages       = {1-17},
     343}
     344
     345@article{Mellor-Crummey91,
     346    keywords    = {spin locks, compare-and-swap, barriers},
     347    contributer = {pabuhr@plg},
     348    author      = {John M. Mellor-Crummey and Michael L. Scott},
     349    title       = {Algorithm for Scalable Synchronization on Shared-Memory Multiprocessors},
     350    journal     = tocs,
     351    volume      = 9,
     352    number      = 1,
     353    month       = feb,
     354    year        = 1991,
     355    pages       = {21-65},
     356}
     357
     358@article{Cormack81,
     359    keywords    = {},
     360    contributer = {gjditchfield@plg},
     361    author      = {Gordon V. Cormack},
     362    title       = {An Algorithm for the Selection of Overloaded Functions in {Ada}},
     363    journal     = sigplan,
     364    year        = 1981,
     365    month       = feb, volume = 16, number = 2, pages = {48-52},
     366    comment     = {
     367        A one-pass, top-down algorithm for overload resolution.  Input is a
     368        parse tree and the desired result type, and output is the number of
     369        solutions.  For each overloading of the root identifier with a
     370        matching parameter list, recursively solve for each parameter for
     371        the corresponding argument type---there should be one solution.
     372    }
     373}
     374
     375@book{Raynal86,
     376    keywords    = {mutual exclusion, locks},
     377    contributer = {pabuhr@plg},
     378    author      = {M. Raynal},
     379    title       = {Algorithms for Mutual Exclusion},
     380    publisher   = {The MIT Press},
     381    address     = {Cambridge, Massachusetts},
     382    series      = {Scientific Computation Series},
     383    year        = 1986,
     384    note        = {Translated by D. Beeson},
     385}
     386
     387@incollection{Gidenstam05,
     388    keywords    = {lock free, dynamic memory allocation},
     389    contributer = {pabuhr@plg},
     390    author      = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas},
     391    title       = {Allocating Memory in a Lock-free Manner},
     392    editor      = {Gerth St{\o}lting Brodal and Stefano Leonardi},
     393    booktitle   = {Algorithms -- ESA 2005},
     394    pages       = {329-342},
     395    publisher   = {Springer},
     396    year        = 2005,
     397    volume      = 3669,
     398    series      = {Lecture Notes in Computer Science},
     399}
     400
     401@book{Sites92,
     402    keywords    = {computers, Alpha},
     403    contributer = {pabuhr@plg},
     404    editor      = {Richard L. Sites},
     405    title       = {Alpha Architecture Reference Manual},
     406    publisher   = {Digital Press, One Burlington Woods Drive, Burlington, MA, U. S. A., 01803},
     407    year        = 1992,
     408}
     409
     410@book{alphard,
     411    keywords    = {Parametric polymorphism, alphard, iterators, nested types},
     412    contributer = {gjditchfield@plg},
     413    editor      = {Mary Shaw},
     414    title       = {{ALPHARD}: Form and Content},
     415    publisher   = {Springer-Verlag},
     416    year        = 1981,
     417    comment     = {Collection of papers about Alphard.}
     418}
     419
     420@article{Kessels77,
     421    keywords    = {monitors},
     422    contributer = {pabuhr@plg},
     423    author      = {Joep L. W. Kessels},
     424    title       = {An Alternative to Event Queues for Synchronization in Monitors},
     425    journal     = cacm,
     426    volume      = 20,
     427    number      = 7,
     428    month       = jul,
     429    year        = 1977,
     430    pages       = {500-503},
     431    annote      = {
     432    }
     433}
     434
     435@article{descr,
     436    keywords    = {X2, subclasses, inheritance, parameterized classes},
     437    contributer = {gjditchfield@plg},
     438    author      = {David Sandberg},
     439    title       = {An Alternative to Subclassing},
     440    journal     = sigplan,
     441    volume      = {21},    number = {11},
     442    pages       = {424-428},
     443    month       = nov, year = 1986,
     444    comment     = {
     445        The Smalltalk class hierarchy has three uses: factoring out code;
     446        ``Abstraction superclasses'' such as Collection; rapid construction
     447        of new classes by incremental change.
     448
     449        ``A descriptive class specifies a partial behavior by specifying a
     450        set of procedure headings that describe what can be done with
     451        instances of classes that belong to the descriptive class.''  An
     452        ``instance'' statement declares a class to be an instance of a
     453        descriptive class and defines the correspondence between
     454        operations.  Procedures with descriptive class parameters take any
     455        instance as arguments.  Descriptive classes can describe relations
     456        like ``c is a collection with element type e'', but how such things
     457        are used isn't explained.
     458       
     459        For each descriptive class used in a parameter list, an implicit
     460        parameter is created that is passed a vector of procedures.
     461    }
     462}
     463
     464@incollection{Matsuoka93,
     465    keywords    = {inheritance anomaly},
     466    contributer = {pabuhr@plg},
     467    author      = {Satoshi Matsuoka and Akinori Yonezawa},
     468    title       = {Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages},
     469    booktitle   = {Research Directions in Concurrent Object-Oriented Programming},
     470    editor      = {Gul Agha and Peter Wegner and Akinori Yonezawa},
     471    publisher   = {MIT Press},
     472    year        = 1993,
     473    pages       = {107-150},
     474}
     475
     476@article{Sinha00,
     477    author      = {Saurabh Sinha and Mary Jean Harrold},
     478    title       = {Analysis and Testing of Programs with Exception-Handling Constructs},
     479    journal     = ieeese,
     480    year        = 2000,
     481    month       = sep,
     482    volume      = 26,
     483    number      = 9,
     484    pages       = {849--871},
     485}
     486
     487@inproceedings{Robillard99,
     488    author      = {Martin P. Robillard and Gail C. Murphy},
     489    title       = {Analyzing Exception Flow in {J}ava Programs},
     490    booktitle   = {ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly
     491                   with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering},
     492    year        = 1999,
     493    pages       = {322--337},
     494    isbn        = {3-540-66538-2},
     495    location    = {Toulouse, France},
     496    doi         = {http://doi.acm.org/10.1145/318773.319251},
     497    publisher   = {Springer-Verlag},
     498    address     = {London, UK},
     499}
     500
     501@book{C++,
     502    keywords    = {C++, ANSI},
     503    author      = {Margaret A. Ellis and Bjarne Stroustrup},
     504    title       = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
     505    publisher   = {Addison-Wesley},
     506    year        = 1990,
     507    edition     = {first},
     508}
     509
     510@book{APL,
     511    keywords    = {APL},
     512    contributer = {pabuhr@plg},
     513    author      = {K. E. Iverson},
     514    title       = {A Programming Language},
     515    publisher   = {Wiley, New York},
     516    year        = 1962
     517}
     518
     519@article{PS-Algol:old,
     520    author      = {M. Atkinson and P. Bailey and K. Chisholm and P. Cockshott and R. Morrison},
     521    title       = {An Approach to Persistent Programming},
     522    journal     = {The Computer Journal},
     523    year        = 1983,
     524    volume      = 26,
     525    number      = 4,
     526    pages       = {360-365},
     527}
     528
     529@article{Kessels82,
     530    keywords    = {concurrency, critical section},
     531    contributer = {pabuhr@plg},
     532    author      = {Joep L. W. Kessels},
     533    title       = {Arbitration Without Common Modifiable Variables},
     534    journal     = acta,
     535    volume      = 17,
     536    number      = 2,
     537    month       = jun,
     538    year        = 1982,
     539    pages       = {135-141},
     540}
     541
     542@article{Buhr95a,
     543    keywords    = {concurrency, library approach},
     544    contributer = {pabuhr@plg},
     545    author      = {Peter A. Buhr},
     546    title       = {Are Safe Concurrency Libraries Possible?},
     547    journal     = cacm,
     548    month       = feb,
     549    year        = 1995,
     550    volume      = 38,
     551    number      = 2,
     552    pages       = {117-120},
     553}
     554
     555@book{ARMv7,
     556    key         = {ARM processor},
     557    title       = {ARM Architecture Reference Manual},
     558    publisher   = {ARM},
     559    volume      = {ARM DDI 0406C.b (ID072512)},
     560    year        = 2012,
     561}
     562
     563@book{Herlihy08,
     564    contributer = {pabuhr@plg},
     565    author      = {Herlihy, Maurice and Shavit, Nir},
     566    title       = {The Art of Multiprocessor Programming},
     567    year        = 2008,
     568    isbn        = {0123705916, 9780123705914},
     569    publisher   = {Morgan Kaufmann Publishers Inc.},
     570    address     = {San Francisco, CA, USA},
     571}
     572
     573@inproceedings{Chung10,
     574    keywords    = {transactional memory, lock-free programming, x86 architecture},
     575    contributer = {pabuhr@plg},
     576    author      = {Jaewoong Chung and Luke Yen and Stephan Diestelhorst and Martin Pohlack and Michael Hohmuth and David Christie and Dan Grossman},
     577    title       = {ASF: AMD64 Extension for Lock-Free Data Structures and Transactional Memory},
     578    booktitle   = {Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture},
     579    series      = {MICRO '43},
     580    year        = 2010,
     581    pages       = {39--50},
     582    numpages    = {12},
     583    publisher   = {IEEE Computer Society},
     584    address     = {Washington, DC, USA},
     585}
     586
     587@article{Buhr94a,
     588    keywords    = {assignment, parameter passing, multiple assignment},
     589    contributer = {pabuhr@plg},
     590    author      = {P. A. Buhr and David Till and C. R. Zarnke},
     591    title       = {Assignment as the Sole Means of Updating Objects},
     592    journal     = spe,
     593    month       = sep,
     594    year        = 1994,
     595    volume      = 24,
     596    number      = 9,
     597    pages       = {835-870},
     598}
     599
     600@inproceedings{Krischer08,
     601    keywords    = {exception handling, asynchronous, blocked tasks},
     602    contributer = {pabuhr@plg},
     603    author      = {Roy Krischer and Peter A. Buhr},
     604    title       = {Asynchronous Exception Propagation in Blocked Tasks},
     605    booktitle   = {4th International Workshop on Exception Handling (WEH.08)},
     606    organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
     607    address     = {Atlanta, U.S.A},
     608    month       = nov,
     609    year        = 2008,
     610    pages       = {8-15},
     611}
     612
     613@article{oop:modpascal,
     614    keywords    = {ModPascal},
     615    contributer = {gjditchfield@plg},
     616    author      = {Walter G. Olthoff},
     617    title       = {Augmentation of Object-Oriented Programming by Concepts of Abstract Data Type Theory: The ModPascal Experience},
     618    journal     = sigplan,
     619    volume      = 21,
     620    number      = 11,
     621    pages       = {429-443},
     622    month       = nov,
     623    year        = 1986
     624}
     625
     626@inproceedings{Shen91,
     627    keywords    = {Ada, polymorphism},
     628    contributer = {pabuhr@plg},
     629    author      = {Jun Shen and Gordon V. Cormack},
     630    title       = {Automatic instantiation in Ada},
     631    booktitle   = {Proceedings of the ACM Tri-Ada Conference},
     632    organization= {ACM},
     633    address     = {San Jose, California, U.S.A},
     634    month       = oct,
     635    year        = 1991,
     636    pages       = {338-346},
     637}
     638
     639@article{Havender68,
     640    keywords    = {deadlock},
     641    contributer = {pabuhr@plg},
     642    author      = {J. W. Havender},
     643    title       = {Avoiding Deadlock in Multitasking Systems},
     644    journal     = ibmsj,
     645    volume      = 7,
     646    number      = 2,
     647    year        = 1968,
     648    pages       = {74-84},
     649}
     650
     651% B
     652
     653@incollection{beta:old,
     654    keywords    = {beta, patterns, virtual types},
     655    contributer = {gjditchfield@plg},
     656    author      = {Bent Bruun Kristensen and Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
     657    title       = {The BETA Programming Language},
     658    booktitle   = {Research Directions in Object-Oriented Programming},
     659    publisher   = {MIT Press},
     660    series      = {Computer Systems Series},
     661    year        = 1987,
     662    pages       = {7-48},
     663    editor      = {Bruce Shriver and Peter Wegner}
     664}
     665
     666@article{Knudsen87,
     667    keyword     = {static exception handling mechanism, BETA, sequel},
     668    contributor = {wyrmok@plg},
     669    author      = {J{\o}rgen Lindskov Knudsen},
     670    title       = {Better Exception Handling in Block Structured Systems},
     671    journal     = {IEEE Software},
     672    year        = 1987,
     673    month       = may,
     674    volume      = 4,
     675    number      = 3,
     676    pages       = {40-49},
     677    comments    = {
     678        Going up the call hierarchy to look for a handler does not fit an
     679        otherwise statically scoped language. Also, not knowing which handler
     680        to be used when raising an abnormal event is seen as a weakness of the
     681        (dynamic) exception handling mechanism. Knudsen believed that raising
     682        an exception should specify the handler for the exception -- the
     683        handler is chosen when the exception is raised.  However, I don't think
     684        his scheme can solve the problem, especially with all the callback
     685        routines commonly found in OO programming.
     686
     687        BETA exception handling mechanism uses his work as a foundation.
     688        However, I don't see any benefits BETA has over other language that is
     689        a direct consequence of Knudsen's work. On the other hand, my knowledge
     690        on BETA is very limited.
     691        }
     692}
     693
     694@book{BCPL,
     695    keywords    = {BCPL},
     696    contributer = {pabuhr@plg},
     697    author      = {M. Richards and C. Whitby-Strevens},
     698    title       = {{BCPL} -- The Language and Its Compiler},
     699    publisher   = {Cambridge University Press, Cambridge},
     700    year        = 1979,
     701}
     702
     703@incollection{Madsen87,
     704    keywords    = {nested classes},
     705    contributer = {pabuhr@watmsg},
     706    author      = {Ole Lehrmann Madsen},
     707    title       = {Block Structure and Object Oriented Languages},
     708    booktitle   = {Research Directions in Object-Oriented Programming},
     709    editor      = {Bruce Shriver and Peter Wegner},
     710    publisher   = {MIT Press},
     711    series      = {Computer Systems Series},
     712    year        = 1987,
     713    pages       = {113-128}
     714}
     715
     716@inproceedings{booleanClasses,
     717    keywords    = {specifications},
     718    contributer = {gjditchfield@plg},
     719    author      = {David McAllester and Ramin Zabih},
     720    title       = {Boolean Classes},
     721    crossref    = "OOPSLA86",
     722    pages       = {417-423},
     723    abstract    = {
     724        We extend the notion of class so that any Boolean combination of
     725        classes is also a class.  Boolean classes allow greater precision
     726        and conciseness in naming the class of objects governed a
     727        particular method [sic].  A class can be viewed as a predicate
     728        which is either true or false of any given object.  Unlike
     729        predicates however classes have an inheritance hierarchy which is
     730        known at compile time.  Boolean classes extend the notion of class,
     731        making classes more like predicates, while preserving the compile
     732        time computable inheritance hierarchy.
     733    },
     734    comment = {
     735        Classes are predicates; if object {\tt o} is in class {\tt C}, then
     736        {\tt C} is true of {\tt o}.  Classes are combined with {\tt :AND},
     737        {\tt :OR}, and {\tt :NOT}.  Inheritance is treated as implication:
     738        {\tt (:implies C E)} means that if class {\tt C} is true of {\tt
     739        o}, class expression {\tt E} is true of {\tt o}, so if {\tt E} is a
     740        class, it is a superclass of {\tt C}.  Some class expressions, i.e.
     741        {\tt (:OR c1 c2)}, can't be instantiated.  Others, i.e. {\tt (:NOT
     742        c)}, can't be given methods or members because almost all classes
     743        would inherit them, violating modularity.  The rules for spotting
     744        these problems are complex.  Determining if one class inherits from
     745        another needs an exponential algorithm.
     746    }
     747}
     748
     749@mastersthesis{Krischer02,
     750    author      = {Roy Krischer },
     751    title       = {Bound Exceptions in Object-Oriented Programming Languages},
     752    school      = {Universit\"at Mannheim},
     753    address     = {Mannheim, Deutschland},
     754    year        = 2002,
     755    month       = oct,
     756    type        = {Diplomarbeit},
     757    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-KrischerThesis.ps.gz}}},
     758}
     759
     760@inproceedings{Buhr03,
     761    keywords    = {exception handling, bound handler},
     762    contributer = {pabuhr@plg},
     763    author      = {Peter A. Buhr and Roy Krischer},
     764    title       = {Bound Exceptions in Object Programming},
     765    booktitle   = {Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object Oriented Systems:
     766                  Towards Emerging Application Areas and New Programming Paradigms},
     767    organization= {ECOOP},
     768    address     = {Darmstadt, Germany},
     769    month       = jul,
     770    year        = 2003,
     771    pages       = {20-26},
     772}
     773%    note       = {http://www.cs.umn.edu/research/technical_reports.php/listing/technical_reports.php?page=report&report_id=03-028}
     774
     775@inproceedings{Buhr06b,
     776    keywords    = {exception handling, bound exceptions},
     777    author      = {Peter A. Buhr and Roy Krischer},
     778    title       = {Bound Exceptions in Object-Oriented Programming},
     779    editor      = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
     780    booktitle   = {Advanced Topics in Exception Handling Techniques},
     781    publisher   = {Springer-Verlag},
     782    series      = {Lecture Notes in Computer Science},
     783    volume      = 4119,
     784    year        = 2006,
     785    pages       = {1-21}
     786}
     787
     788% C
     789
     790@book{C,
     791    keywords    = {C},
     792    contributer = {pabuhr@plg},
     793    author      = {Brian W. Kernighan and Dennis M. Ritchie},
     794    title       = {The {C} Programming Language},
     795    publisher   = {Prentice Hall},
     796    year        = 1988,
     797    edition     = {second},
     798    series      = {Prentice Hall Software Series},
     799    comment     = {
     800         based on draft-proposed ANSI C
     801    }
     802}
     803
     804@book{C:old,
     805    keywords    = {C},
     806    contributer = {pabuhr@plg},
     807    author      = {Brian W. Kernighan and Dennis M. Ritchie},
     808    title       = {The {C} Programming Language},
     809    publisher   = {Prentice Hall},
     810    year        = 1978,
     811    edition     = {first},
     812}
     813
     814@manual{ANSI89:C,
     815    keywords    = {ANSI C 89},
     816    contributer = {gjditchfield@plg},
     817    title       = {American National Standard for Information Systems -- Programming Language -- {C}},
     818    organization= {American National Standards Institute},
     819    address     = {1430 Broadway, New York, New York  10018},
     820    month       = dec,
     821    year        = 1989,
     822    note        = {X3.159-1989}
     823}
     824
     825@manual{C11,
     826    keywords    = {ISO/IEC C 11},
     827    contributer = {pabuhr@plg},
     828    key         = {C11},
     829    title       = {American National Standard Information technology -- Programming Languages -- {C}},
     830    organization= {International Standard ISO/IEC 9899-2011[2012]},
     831    publisher   = {International Standard Organization},
     832    address     = {http://www.iso.org},
     833    year        = 2012,
     834}
     835
     836@mastersthesis{Esteves04,
     837    keywords    = {Cforall, parametric polymorphism, overloading},
     838    contributer = {pabuhr@plg},
     839    author      = {Rodolfo Gabriel Esteves},
     840    title       = {C$\forall$, a Study in Evolutionary Design in Programming Languages},
     841    school      = {School of Computer Science, University of Waterloo},
     842    year        = 2004,
     843    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     844    note        = {\href{http://plg.uwaterloo.ca/theses/EstevesThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-EstevesThesis.pdf}},
     845}
     846
     847@inproceedings{c++scheme,
     848    keywords    = {},
     849    contributer = {gjditchfield@plg},
     850    author      = {Vincent F. Russo and Simon M. Kaplan},
     851    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Interpreter for {S}cheme},
     852    booktitle   = {Usenix {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
     853    year        = 1988,
     854    pages       = {95-108},
     855    summary     = {
     856        The SIOD interpreter for a Scheme subset, written in C, has a
     857        tagged union representing data objects, and read(), eval(), and
     858        print() functions that are basically large switch statements that
     859        switch based on the tag.  The authors rewrote it to use a class
     860        with virtual read(), eval(), and print() members, without changing
     861        any algorithms.  The result was more modular, more easily
     862        extensible, more reliable, and slightly faster.
     863    },
     864    comment     = {
     865        The evidence given is thin.
     866        }
     867}
     868
     869@article{doskernel,
     870    keywords    = {light weight processes},
     871    contributer = {gjditchfield@plg},
     872    author      = {Tom Green},
     873    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Multitasking Kernel},
     874    journal     = {Dr. Dobb's Journal of Software Tools},
     875    year        = 1989,
     876    month       = feb, volume = 14, number = 2, pages = {45-51},
     877    comment     = {
     878       A light-weight multitasking kernel for MS-DOS.  A task\_control
     879       object holds task objects, which may block themselves on signal
     880       objects.  Task switching is normally preemptive, but tasks can turn
     881       off preemption before calling non-reentrant routines.  Source code
     882       is given.
     883    }
     884}
     885
     886@inproceedings{Doeppner87,
     887    keywords    = {concurrency},
     888    contributer = {pabuhr@plg},
     889    author      = {Thomas W. Doeppner and Alan J. Gebele},
     890    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} on a Parallel Machine},
     891    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
     892    organization= {USENIX Association},
     893    address     = {Santa Fe, New Mexico, U.S.A},
     894    month       = nov,
     895    year        = 1987,
     896    pages       = {94-107},
     897}
     898
     899@book{Lippman91,
     900    keywords    = {C++},
     901    contributer = {pabuhr@plg},
     902    author      = {Stanley B. Lippman},
     903    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
     904    publisher   = {Addison-Wesley},
     905    year        = 1991,
     906    edition     = {second},
     907    note        = {QA76.73.C15L57},
     908}
     909
     910@book{c++:v1,
     911    keywords    = {C++},
     912    contributer = {gjditchfield@plg},
     913    author      = {Bjarne Stroustrup},
     914    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
     915    publisher   = {Addison-Wesley},
     916    year        = 1986,
     917    edition     = {first},
     918    series      = {Addison-Wesley Series in Computer Science}
     919}
     920
     921@book{c++:v2,
     922    keywords    = {C++},
     923    contributer = {pabuhr@plg},
     924    author      = {Bjarne Stroustrup},
     925    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
     926    publisher   = {Addison-Wesley},
     927    year        = 1991,
     928    edition     = {second},
     929}
     930
     931@book{c++:v3,
     932    keywords    = {C++},
     933    contributer = {pabuhr@plg},
     934    author      = {Bjarne Stroustrup},
     935    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
     936    publisher   = {Addison-Wesley},
     937    year        = 1997,
     938    edition     = {third},
     939}
     940
     941@manual{Csharp,
     942    keywords    = {C#},
     943    contributer = {pabuhr@plg},
     944    title       = {C\# Language Specification, Standard ECMA-334},
     945    organization= {ECMA International Standardizing Information and Communication Systems},
     946    month       = jun,
     947    year        = 2006,
     948    edition     = {4th},
     949}
     950
     951@article{Buhr85,
     952    keywords    = {goto, multi-exit loop},
     953    contributer = {pabuhr@plg},
     954    author      = {P. A. Buhr},
     955    title       = {A Case for Teaching Multi-exit Loops to Beginning Programmers},
     956    journal     = sigplan,
     957    volume      = 20,
     958    number      = 11,
     959    month       = nov,
     960    year        = 1985,
     961    pages       = {14-22}
     962}
     963
     964@techreport{cforall-ug,
     965    keywords    = {cforall, user guide},
     966    contributer = {pabuhr@plg},
     967    author      = {Peter A. Buhr and Glen Ditchfield and David Till and Charles R. Zarnke},
     968    title       = {\mbox{\mdseries\sffamily C{$\mathbf{\forall}$}}\ Users Guide, Version 0.1},
     969    institution = {Department of Computer Science, University of Waterloo},
     970    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     971    month       = oct,
     972    year        = 2001,
     973    note        = {\href{http://plg.uwaterloo.ca/~cforall/cfa.ps}{http://\-plg.uwaterloo.ca/\-\char`\~cforall/\-cfa.ps}},
     974}
     975
     976@manual{cforall,
     977    keywords    = {polymorphism},
     978    contributer = {gjditchfield@plg},
     979    author      = {Glen Ditchfield},
     980    title       = {Cforall Reference Manual and Rationale},
     981    edition     = {Revision 1.82},
     982    month       = jan,
     983    year        = 1998,
     984    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-Cforall/\-refrat.ps.gz}}},
     985}
     986
     987@book{Yourdon79,
     988    keywords    = {software engineering},
     989    contributer = {pabuhr@plg},
     990    editor      = {Edward Nash Yourdon},
     991    title       = {Classics in Software Engineering},
     992    publisher   = {Yourdon Press},
     993    year        = 1979,
     994}
     995
     996@inproceedings{Crnogorac98,
     997    keywords    = {inheritance anomaly},
     998    contributer = {pabuhr@plg},
     999    author      = {Lobel Crnogorac and Anand S. Rao and Kotagiri Ramamohanarao},
     1000    title       = {Classifying Inheritance Mechanisms in Concurrent Object-Oriented Programming},
     1001    editor      = {Eric Jul},
     1002    booktitle   = {{ECOOP}~'98---Object-Oriented Programming},
     1003    series      = {Lecture Notes in Computer Science},
     1004    publisher   = {Springer},
     1005    volume      = 1445,
     1006    year        = 1998,
     1007    pages       = {571-601},
     1008    ISBN        = {3-540-64737-6},
     1009    ISSN        = {0302-9743},
     1010    abstract    = {
     1011        Inheritance is one of the key concepts in object-oriented rogramming. However, the
     1012        usefulness of inheritance in concurrent object-oriented programming is greatly
     1013        reduced by the problem of inheritance anomaly. Inheritance anomaly is manifested
     1014        by undesirable re-definitions of inherited code. The problem is aggravated by the
     1015        lack of a formal analysis, with a multitude of differing proposals and conflicting
     1016        opinions causing the current state of research, and further directions, to be
     1017        unclear. In this paper we present a formal analysis of inheritance anomaly in
     1018        concurrent object-oriented programming. Starting from a formal definition of the
     1019        problem we develop a taxonomy of the anomaly, and use it to classify the various
     1020        proposals. As a result, the major ideas, trends and limitations of the various
     1021        proposals are clearly exposed. Formal analysis of the anomaly and a thorough
     1022        exposition of its causes and implications are the pre-requisites for a successful
     1023        integration of inheritance and concurrency.
     1024    },
     1025}
     1026
     1027@book{CLU,
     1028    keywords    = {CLU},
     1029    contributer = {gjditchfield@plg},
     1030    author      = {Barbara Liskov and Russell Atkinson and Toby Bloom and Eliot
     1031                Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
     1032    title       = {CLU Reference Manual},
     1033    publisher   = {Springer-Verlag},
     1034    year        = 1981,
     1035    volume      = 114,
     1036    series      = {Lecture Notes in Computer Science}
     1037}
     1038
     1039@manual{Cobol14,
     1040    keywords    = {ISO/IEC Cobol 14},
     1041    contributer = {pabuhr@plg},
     1042    key         = {Cobol14},
     1043    title       = {Programming Languages -- {Cobol}},
     1044    edition     = {second},
     1045    organization= {International Standard ISO/IEC 1989:2014},
     1046    publisher   = {International Standard Organization},
     1047    address     = {http://www.iso.org},
     1048    year        = 2014,
     1049}
     1050
     1051@article{coagulation,
     1052    keywords    = {register allocation, instruction selection, jello},
     1053    contributer = {gjditchfield@plg},
     1054    author      = {Michael Karr},
     1055    title       = {Code Generation by Coagulation},
     1056    journal     = sigplan,
     1057    year        = 1984,
     1058    month       = jun, volume = 19, number = 6, pages = {1-12},
     1059    note        = {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction},
     1060    abstract    = {
     1061        This paper describes a new approach to code-generation.  The
     1062        central tenet is that there must be a more intimate coupling
     1063        between register allocation and instruction selection than exists
     1064        in present-day technology.  This is achieved by generating code in
     1065        very small regions and gradually coalescing the part of the program
     1066        that is ``compiled''.
     1067    },
     1068    comment     = {
     1069        Imagine the program, including the subroutines, spread out over a
     1070        table, with the compiler dropping Jello on the parts as they are
     1071        compiled.  At first little drops appear in seemingly random places.
     1072        These get bigger and combine with other drops to form growing
     1073        globs.  When two globs meet, ripples will go out through each as
     1074        they adjust to each other's presence, although the parts of the
     1075        globs that formed first are less affected by the ripples.  When
     1076        compilation is complete, there is one congealed mass.
     1077    }
     1078}
     1079
     1080@article{Soloway83,
     1081    keywords    = {goto, structure programming},
     1082    contributer = {pabuhr@plg},
     1083    author      = {E. Soloway and J. Bonar and K. Ehrlich},
     1084    title       = {Cognitive Strategies and Looping Constructs: An Empirical Study},
     1085    journal     = cacm,
     1086    month       = nov,
     1087    year        = 1983,
     1088    volume      = 26,
     1089    number      = 11,
     1090    pages       = {853-860},
     1091}
     1092
     1093@book{sml:commentary,
     1094    author      = {Robin Milner and Mads Tofte},
     1095    title       = {Commentary on Standard {ML}},
     1096    publisher   = {MIT Press},
     1097    address     = {Cambridge, Massachusetts, U.S.A.},
     1098    year        = 1991
     1099}
     1100
     1101@article{Hyman66,
     1102    keywords    = {mutual exclusion, software solution, incorrect},
     1103    contributer = {pabuhr@plg},
     1104    author      = {Harris Hyman},
     1105    title       = {Comments on a Problem in Concurrent Programming Control},
     1106    journal     = cacm,
     1107    month       = jan,
     1108    year        = 1966,
     1109    volume      = 9,
     1110    number      = 1,
     1111    pages       = {45},
     1112    note        = {Letter to the Editor}
     1113}
     1114
     1115@inproceedings{clos,
     1116    keywords    = {},
     1117    contributer = {gjditchfield@plg},
     1118    author      = {Linda G. DeMichiel and Richard P. Gabriel},
     1119    title       = {The Common Lisp Object System: An Overview},
     1120    booktitle   = {ECOOP '87. European Conference on Object-Oriented Programming},
     1121    year        = 1987,
     1122    pages       = {151-170},
     1123    publisher   = {Springer-Verlag}
     1124}
     1125
     1126@book{CommonLisp,
     1127    keywords    = {common lisp},
     1128    contributer = {pabuhr@plg},
     1129    author      = {G. Steele},
     1130    title       = {COMMON LISP: The Language},
     1131    publisher   = {Digital Press},
     1132    year        = 1984
     1133}
     1134
     1135@article{CommonLoops,
     1136    author      = {D. Bobrow and K. Kahn and G. Kiczales and L. Masinter and M. Stefik and F. Zdybel},
     1137    title       = {CommonLoops: Merging Common Lisp and Object-Oriented Programming},
     1138    address     = {Portland, Oregon, U.S.A.},
     1139    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
     1140    year        = 1986,
     1141    month       = sep,
     1142    pages       = {17-29},
     1143}
     1144
     1145@article{co-overview,
     1146    keywords    = {CommonObjects, implementation, encapsulation},
     1147    contributer = {gjditchfield@plg},
     1148    author      = {Alan Snyder},
     1149    title       = {CommonObjects: An Overview},
     1150    journal     = sigplan,
     1151    year        = 1986,
     1152    month       = oct, volume = 21, number = 10, pages = {19-28},
     1153    note        = {Object Oriented Programming Workshop}
     1154}
     1155
     1156@article{CSP,
     1157    keywords    = {CSP, concurrency},
     1158    contributer = {pabuhr@plg},
     1159    author      = {C. A. R. Hoare},
     1160    title       = {Communicating Sequential Processes},
     1161    journal     = cacm,
     1162    month       = aug,
     1163    year        = 1978,
     1164    volume      = 21,
     1165    number      = 8,
     1166    pages       = {666-677}
     1167}
     1168
     1169@book{Hoare85,
     1170    author      = {C. A. R. Hoare},
     1171    title       = {Communicating Sequential Processes},
     1172    year        = 1985,
     1173    isbn        = {0-13-153271-5},
     1174    publisher   = {Prentice-Hall, Inc.},
     1175    address     = {Upper Saddle River, NJ, USA},
     1176    note        = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
     1177}
     1178
     1179@article{Hansen72a,
     1180    keywords    = {monitors, automatic signal},
     1181    contributer = {pabuhr@plg},
     1182    author      = {Per {Brinch Hansen}},
     1183    title       = {A Comparison of Two Synchronizing Concepts},
     1184    journal     = acta,
     1185    volume      = 1,
     1186    year        = 1972,
     1187    pages       = {190-199},
     1188}
     1189
     1190@book{Aho06,
     1191    author      = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
     1192    title       = {Compilers: Principles, Techniques, and Tools},
     1193    edition     = {second},
     1194    year        = {2006},
     1195    publisher   = {Addison-Wesley Longman Publishing Co., Inc.},
     1196    address     = {Boston, MA, USA},
     1197}
     1198
     1199@article{Bacon94,
     1200    keywords    = {parallelizing compiler},
     1201    contributer = {pabuhr@plg},
     1202    author      = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
     1203    title       = {Compiler Transformations for High-Performance Computing},
     1204    journal     = acmcs,
     1205    volume      = 26,
     1206    number      = 4,
     1207    month       = dec,
     1208    year        = 1994,
     1209    pages       = {345-420},
     1210}
     1211
     1212@inproceedings{Berger01,
     1213    author      = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley},
     1214    title       = {Composing High-Performance Memory Allocators},
     1215    booktitle   = {{SIGPLAN} Conference on Programming Language Design and Implementation},
     1216    pages       = {114-124},
     1217    year        = 2001,
     1218    url         = {http://citeseer.ist.psu.edu/berger01composing.html}
     1219}
     1220
     1221@article{Andrews83,
     1222    keywords    = {general concurrency},
     1223    contributer = {pabuhr@plg},
     1224    author      = {Gregory R. Andrews and Fred B. Schneider},
     1225    title       = {Concepts and Notations for Concurrent Programming},
     1226    journal     = acmcs,
     1227    volume      = 15,
     1228    number      = 1,
     1229    month       = mar,
     1230    year        = 1983,
     1231    pages       = {3-43},
     1232}
     1233
     1234@mastersthesis{Mok97,
     1235    author      = {Wing Yeung Russell Mok},
     1236    title       = {Concurrent Abnormal Event Handling Mechanisms},
     1237    school      = {University of Waterloo},
     1238    year        = 1997,
     1239    month       = sep,
     1240    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     1241    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-MokThesis.ps.gz}}},
     1242}
     1243
     1244@article{Gehani86,
     1245    keywords    = {Concurrent programming, C, Distributed systems, rendezvous},
     1246    contributer = {dgharriss@plg},
     1247    author      = {N. H. Gehani and W. D. Roome},
     1248    title       = {{Concurrent C}},
     1249    journal     = spe,
     1250    volume      = 16,
     1251    number      = 9,
     1252    month       = sep,
     1253    year        = 1986,
     1254    pages       = {821-844},
     1255    abstract    = {
     1256        Our objective is to enhance C so that it can be used to write
     1257        concurrent programs that can run efficiently on both single computers
     1258        and multicomputers.  Our concurrent programming extensions to C are
     1259        based on the {\it rendezvous\/} concept.  These extensions include
     1260        mechanisms for the declaration and creation of processes, for process
     1261        synchronization and interaction, for process termination and abortion.
     1262        We give a rationale for our decisions and compare Concurrent C
     1263        extensions with the concurrent programming facilities in Ada.
     1264        Concurrent C has been implemented on the UNIX system running on a
     1265        single processor.  A distributed version of Concurrent C is being
     1266        implemented.
     1267   },
     1268   comment      = {
     1269        Select with guarded and screened accepts.  Typed processes.
     1270        Process-valued expressions and process variables.  Processes have
     1271        execution priority: Create {\em process-type-name}(args) [with
     1272        priority(p)],
     1273        and the priority can be changed on the fly.  Complicated guard/
     1274        screen structure on accept: accept {\em transaction}(param names)
     1275        [suchthat (exp)] [by (exp)] [compoundstatement].  Accepts cannot
     1276        appear in functions!  Can specify timeouts on transaction calls.
     1277        Code examples: buffer process, dining philosophers, lock manager.
     1278        Section on diffs between Concurrent C and Ada.
     1279   }
     1280}
     1281
     1282@article{ConcurrentC++,
     1283    keywords    = {concurrency, C++},
     1284    contributer = {pabuhr@plg},
     1285    author      = {N. H. Gehani and W. D. Roome},
     1286    title       = {Concurrent {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrent Programming with Class(es)},
     1287    journal     = spe,
     1288    month       = dec,
     1289    year        = 1988,
     1290    volume      = 18,
     1291    number      = 12,
     1292    pages       = {1157-1177}
     1293}
     1294
     1295@article{Courtois71,
     1296    keywords    = {reader and writer, p and v},
     1297    contributer = {pabuhr@plg},
     1298    author      = {P. J. Courtois and F. Heymans and D. L. Parnas},
     1299    title       = {Concurrent Control with Readers and Writers},
     1300    journal     = cacm,
     1301    volume      = 14,
     1302    number      = 10,
     1303    month       = oct,
     1304    year        = 1971,
     1305    pages       = {667-668},
     1306    annote      = {
     1307                Many errors in the two solutions.
     1308    }
     1309}
     1310
     1311@incollection{Reppy93,
     1312    keywords    = {ML, concurrency, continuation passing},
     1313    contributer = {pabuhr@plg},
     1314    author      = {John H. Reppy},
     1315    title       = {Concurrent {ML}: Design, Application and Semantics},
     1316    booktitle   = {Functional Programming, Concurrency, Simulation and Automated Reasoning},
     1317    editor      = {P. E. Lauer},
     1318    pages       = {165-198},
     1319    publisher   = {Springer-Verlag},
     1320    address     = {Berlin, DE},
     1321    year        = 1993,
     1322    ISBN        = {3-540-56883-2},
     1323    abstract    = {
     1324        Concurrent ML (CML) is a high-level language for concurrent
     1325        programming. It is an extension of Standard ML (SML) and is implemented
     1326        on top of Standard ML of New Jersey (SML/NJ). CML is a practical
     1327        language and is being used to build real systems. It demonstrates that
     1328        one need not sacrifice high-level notation in order to have good
     1329        performance. CML is also a well-defined language. In the tradition of
     1330        SML, it has a formal semantics and its type-soundness has been
     1331        proven.},
     1332    note        = {
     1333        Proceedings of International Lecture Series 1991-92, McMaster
     1334        UniversityLecture Notes in Computer Science 693.},
     1335}
     1336
     1337@article{BLASE-2,
     1338    keywords    = {concurrency, BLASE-2},
     1339    contributer = {pabuhr@plg},
     1340    author      = {Piyush Mehrotra and John Van Rosendale},
     1341    title       = {Concurrent Object Access in BLASE~2},
     1342    journal     = sigplan,
     1343    volume      = 24,
     1344    number      = 4,
     1345    month       = apr,
     1346    year        = 1989,
     1347    pages       = {40-42},
     1348    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
     1349                   Sept. 26--27, 1988, San Diego, California, U.S.A},
     1350}
     1351
     1352@techreport{Kafura88,
     1353    keywords    = {objects, concurrency},
     1354    contributer = {pabuhr@plg},
     1355    author      = {Dennis Kafura},
     1356    title       = {Concurrent Object-Oriented Real-Time Systems Research},
     1357    institution = {Department of Computer Science, Virginia Polytechnic},
     1358    number      = {TR 88-47},
     1359    year        = 1988
     1360}
     1361
     1362@article{Buhr92a,
     1363    keywords    = {C++, concurrency, light-weight process, shared memory},
     1364    contributer = {pabuhr@plg},
     1365    author      = {P. A. Buhr and Glen Ditchfield and R. A. Stroobosscher and B. M. Younger and C. R. Zarnke},
     1366    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrency in the Object-Oriented Language {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     1367    journal     = spe,
     1368    volume      = 22,
     1369    number      = 2,
     1370    month       = feb,
     1371    year        = 1992,
     1372    pages       = {137-172},
     1373}
     1374
     1375@techreport{uC++,
     1376    keywords    = {C++, concurrency, light-weight process, shared memory},
     1377    contributer = {pabuhr@plg},
     1378    author      = {Peter A. Buhr},
     1379    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Annotated Reference Manual, Version 6.1.0},
     1380    institution = {School of Computer Science, University of Waterloo},
     1381    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     1382    month       = jul,
     1383    year        = 2015,
     1384    note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-6.1.0.sh}{\textsf{http://plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-6.1.0.sh}}},
     1385}
     1386
     1387@book{Burns93,
     1388    keywords    = {concurrency, Pascal},
     1389    contributer = {pabuhr@plg},
     1390    author      = {Alan Burns and Geoff Davies},
     1391    title       = {Concurrent Programming},
     1392    publisher   = {Addison-Wesley},
     1393    year        = 1993,
     1394}
     1395
     1396@article{Hansen73a,
     1397    keywords    = {monitors},
     1398    contributer = {pabuhr@plg},
     1399    author      = {Per {Brinch Hansen}},
     1400    title       = {Concurrent Programming Concepts},
     1401    journal     = spe,
     1402    month       = dec,
     1403    year        = 1973,
     1404    volume      = 5,
     1405    number      = 4,
     1406    pages       = {223-245},
     1407}
     1408
     1409@book{Lea97,
     1410    keywords    = {concurrency, Java},
     1411    contributer = {pabuhr@plg},
     1412    author      = {Doug Lea},
     1413    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
     1414    publisher   = {Addison-Wesley},
     1415    year        = 1997,
     1416    edition     = {first},
     1417}
     1418
     1419@book{Hartley98,
     1420    keywords    = {concurrency, Java},
     1421    contributer = {pabuhr@plg},
     1422    author      = {Stephen J. Hartley},
     1423    title       = {Concurrent Programming: The {J}ava Programming Language},
     1424    publisher   = {Oxford University Press},
     1425    year        = 1998,
     1426    edition     = {first},
     1427}
     1428
     1429@book{Lea00,
     1430    keywords    = {concurrency, Java},
     1431    contributer = {pabuhr@plg},
     1432    author      = {Doug Lea},
     1433    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
     1434    publisher   = {Addison-Wesley},
     1435    year        = 2000,
     1436    edition     = {second},
     1437}
     1438
     1439@book{ConcurrentC,
     1440    keywords    = {concurrency, C},
     1441    contributer = {pabuhr@plg},
     1442    author      = {N. H. Gehani and W. D. Roome},
     1443    title       = {The {Concurrent C} Programming Language},
     1444    publisher   = {Silicon Press, NJ},
     1445    year        = 1989,
     1446}
     1447
     1448@book{Andrews91:book,
     1449    keywords    = {concurrency},
     1450    contributer = {pabuhr@plg},
     1451    author      = {Gregory R. Andrews},
     1452    title       = {Concurrent Programming: Principles and Practice},
     1453    publisher   = {Benjamin/Cummings Publishing Company, Inc., Redwood City, California},
     1454    year        = 1991,
     1455}
     1456
     1457@article{Buhr05a,
     1458    keywords    = {concurrency, myths},
     1459    contributer = {pabuhr@plg},
     1460    author      = {Peter A. Buhr and Ashif S. Harji},
     1461    title       = {Concurrent Urban Legends},
     1462    journal     = {Concurrency and Computation: Practice and Experience},
     1463    month       = aug,
     1464    year        = 2005,
     1465    volume      = 17,
     1466    number      = 9,
     1467    pages       = {1133-1172},
     1468}
     1469
     1470@techreport{Buhr90,
     1471    keywords    = {objects, concurrency},
     1472    contributer = {gjditchfield@plg},
     1473    author      = {P. A. Buhr and G. J. Ditchfield and B. M. Younger and C. R. Zarnke},
     1474    title       = {Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     1475    institution = {Department of Computer Science, University of Waterloo},
     1476    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     1477    number      = {CS-90-18},
     1478    month       = may,
     1479    year        = 1990
     1480}
     1481
     1482@book{Burns98,
     1483    keywords    = {concurrency, Ada},
     1484    author      = {Alan Burns and Andy Wellings},
     1485    title       = {Concurrency in {Ada}},
     1486    publisher   = {Cambridge University Press},
     1487    year        = 1998,
     1488    edition     = {second},
     1489}
     1490
     1491@book{Bernstein93,
     1492    keywords    = {concurrency},
     1493    author      = {Arthur J. Bernstein and Philip M. Lewis},
     1494    title       = {Concurrency in Programming and Database Systems},
     1495    publisher   = {Jones and Bartlett},
     1496    year        = 1993,
     1497}
     1498
     1499@inproceedings{Pitman01,
     1500    keywords    = {LISP, exception handling},
     1501    contributer = {pabuhr@plg},
     1502    author      = {Kent M. Pitman},
     1503    title       = {Condition Handling in the Lisp Language Family},
     1504    booktitle   = {Exception Handling},
     1505    publisher   = {Springer-Verlag},
     1506    volume      = 2022,
     1507    series      = {LNCS},
     1508    year        = 2001,
     1509    pages       = {39-59}
     1510}
     1511
     1512@inbook{enhancement,
     1513    keywords    = {bounded polymorphism, Comandos},
     1514    contributer = {gjditchfield@plg},
     1515    author      = {Chris Horn},
     1516    title       = {Conformace, Genericity, Inheritance and Enhancement},
     1517    pages       = {223-233},
     1518    publisher   = {Springer-Verlag},
     1519    year        = 1987,
     1520    volume      = 276,
     1521    series      = "Lecture Notes in Computer Science",
     1522    note        = "ECOOP '87 European Conference on Object-Oriented Programming",
     1523    summary     = {
     1524        Considers effect of conformance on Meyer's conclusions in
     1525        \cite{polymorphism}.
     1526
     1527        Implementing a swap function as a member of a type {\cd Swappable}
     1528        with {\cd in out Top} parameters doesn't work, because conformance
     1529        requires arguments to be of type {\cd Top}.
     1530
     1531        An enhancive type has a type parameter, bounded by some type, and
     1532        defines members.  Types conforming to the bound can be passed as
     1533        arguments to create types with the extra members.  The signature of
     1534        the enhanced type is based on the signature of the argument, not the
     1535        bound, as if enhancive types were macros.  Hence enhanced types do not
     1536        necessarily conform to each other.  Types conforming to the bound
     1537        conform to enhanced types, which allows new functions to be applied
     1538        to old types.
     1539
     1540        Enhancive types are not generic types.  If the argument is omitted,
     1541        the bound is used as a default.  Assignment of enhanced types to
     1542        default-enhanced types is allowed (enhanced types conform to the
     1543        default-enhanced type).  This is (probably) statically type-safe,
     1544        because arguments must conform to the bound, and the new members
     1545        only use operations defined for the bound.
     1546
     1547        With facilities for member renaming and deletion, enhancive types
     1548        provide the equivalent of constrained generic types.
     1549    }
     1550}
     1551
     1552@phdthesis{Ditchfield92,
     1553    keywords    = {C, parametric polymorphism, overloading},
     1554    contributer = {pabuhr@plg},
     1555    author      = {Glen Jeffrey Ditchfield},
     1556    title       = {Contextual Polymorphism},
     1557    school      = {Department of Computer Science, University of Waterloo},
     1558    year        = 1992,
     1559    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     1560    note        = {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
     1561}
     1562
     1563@inproceedings{frameworks:HHG90,
     1564    keywords    = {formal},
     1565    contributer = {pabuhr@plg},
     1566    author      = {Richard Helm and Ian M. Holland and Dipayan Gangopadhyay},
     1567    title       = {Contracts: Specifying Behavioural Compositions in Cbject-Oriented Systems},
     1568    booktitle   = {Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications},
     1569    year        = 1990,
     1570    pages       = {169-180},
     1571}
     1572
     1573@article{Wand80,
     1574    keywords    = {concurrency, continuation},
     1575    contributer = {pabuhr@plg},
     1576    author      = {Mitchell Wand},
     1577    title       = {Continuation-Based Multiprocessing},
     1578    publisher   = {The Lisp Conference},
     1579    journal     = {Conference Record of the 1980 Lisp Conference},
     1580    pages       = {19-28},
     1581    year        = 1980,
     1582}
     1583
     1584@article{Hieb90,
     1585    keywords    = {continuations, concurrency},
     1586    contributer = {pabuhr@plg},
     1587    author      = {Robert Hieb and R. Kent Dybvig},
     1588    title       = {Continuations and Concurrency},
     1589    journal     = sigplan,
     1590    volume      = 25,
     1591    number      = 3,
     1592    month       = mar,
     1593    year        = 1990,
     1594    pages       = {128-136},
     1595    note        = {Proceedings of the Second ACM SIGPLAN Symposium on Principles \& Practise of Parallel Programming,
     1596                   March. 14--16, 1990, Seattle, Washington, U.S.A},
     1597}
     1598
     1599@inproceedings{Haynes84,
     1600    keywords    = {continuations, coroutines, Scheme},
     1601    contributer = {pabuhr@plg},
     1602    author      = {Christopher T. Haynes and Daniel P. Friedman and Mitchell Wand},
     1603    title       = {Continuations and Coroutines},
     1604    booktitle   = {Conference Record of the 1984 {ACM} Symposium on Lisp and Functional Programming},
     1605    organization= {Association for Computing Machinery},
     1606    month       = aug,
     1607    year        = 1984,
     1608    pages       = {293-298},
     1609    abstract    = {
     1610        The power of first class continuations is demonstrated by implementing
     1611        a variety of coroutine mechanisms using only continuations and
     1612        functional abstraction. The importance of general abstraction
     1613        mechanisms such as continuations is discussed.},
     1614}
     1615
     1616@inproceedings{Zahn74,
     1617    keywords    = {goto, structured programming},
     1618    contributer = {pabuhr@plg},
     1619    author      = {C. T. Zahn},
     1620    title       = {Control Statement for Natural Top-down Structured Programming},
     1621    booktitle   = {Symposium on Programming Languages},
     1622    address     = {Paris, France},
     1623    year        = 1974,
     1624}
     1625
     1626@techreport{Dijkstra65,
     1627    keywords    = {concurrency, Dekker's algorithm, semaphores},
     1628    contributer = {pabuhr@plg},
     1629    author      = {Edsger W. Dijkstra},
     1630    title       = {Cooperating Sequential Processes},
     1631    institution = {Technological University},
     1632    address     = {Eindhoven, Netherlands},
     1633    year        = 1965,
     1634    note        = {Reprinted in \cite{Genuys68} pp. 43--112.}
     1635}
     1636
     1637@book{Marlin80,
     1638    keywords    = {coroutines},
     1639    contributer = {pabuhr@plg},
     1640    author      = {Christopher D. Marlin},
     1641    title       = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
     1642    publisher   = {Springer-Verlag},
     1643    year        = 1980,
     1644    volume      = 95,
     1645    series      = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis}
     1646}
     1647 
     1648@article{Wang71,
     1649    keywords    = {coroutines},
     1650    contributer = {pabuhr@plg},
     1651    author      = {Arne Wang and Ole-Johan Dahl},
     1652    title       = {Coroutine Sequencing in a Block Structured Environment},
     1653    journal     = "BIT",
     1654    volume      = 11,
     1655    month       = nov,
     1656    year        = 1971,
     1657    pages       = {425-449},
     1658}
     1659 
     1660@article{Castagna95,
     1661    keywords    = {type-systems, covariance, contravariance},
     1662    contributer = {pabuhr@plg},
     1663    author      = {Giuseppe Castagna},
     1664    title       = {Covariance and Contravariance : Conflict without a Cause},
     1665    journal     = toplas,
     1666    volume      = 17,
     1667    number      = 3,
     1668    month       = may,
     1669    year        = 1995,
     1670    pages       = {341-447},
     1671}
     1672
     1673@book{Fischer88,
     1674    keywords    = {compiler construction},
     1675    author      = {Charles N. Fischer and Richard J. {LeBlanc, Jr.}},
     1676    title       = {Crafting a Compiler},
     1677    publisher   = {Benjamin Cummings},
     1678    year        = 1991,
     1679}
     1680
     1681@inproceedings{Jim02,
     1682    keywords    = {C dialect, parametric polymorphic, safe memory allocation},
     1683    contributer = {pabuhr@plg},
     1684    author      = {Trevor Jim and Greg Morrisett and Dan Grossman and Michael Hicks and James Cheney and and Yanling Wang},
     1685    title       = {{C}yclone: A Safe Dialect of {C}},
     1686    booktitle   = {USENIX Annual Technical Conference},
     1687    organization= {USENIX Association},
     1688    address     = {Monterey, California, U.S.A.},
     1689    month       = jun,
     1690    year        = 2002,
     1691    pages       = {275-288},
     1692}
     1693
     1694% D
     1695
     1696@manual{D,
     1697    keywords    = {D programming language},
     1698    contributer = {pabuhr@plg},
     1699    title       = {{D} Programming Language},
     1700    author      = {Walter Bright and Andrei Alexandrescu},
     1701    organization= {Digital Mars},
     1702    year        = 2016,
     1703    note        = {\href{http://dlang.org/spec/spec.html}{http://\-dlang.org/\-spec/\-spec.html}},
     1704}
     1705
     1706@techreport{Cui90,
     1707    keywords    = {exception handling},
     1708    contributer = {pabuhr@plg},
     1709    author      = {Qian Cui},
     1710    title       = {Data-Oriented Exception Handling},
     1711    institution = {Department of Computer Science, University of Maryland},
     1712    address     = {College Park, Maryland, U.S.A., 20742},
     1713    number      = {CS-TR-2384},
     1714    month       = jan,
     1715    year        = 1990,
     1716}
     1717
     1718@article{Cui92,
     1719    contributer = {rkrische@plg},
     1720    author      = {Qian Cui and John Gannon},
     1721    title       = {Data-oriented Exception Handling},
     1722    journal     = {IEEE Transactions on Software Engineering},
     1723    month       = may,
     1724    year        = 1992,
     1725    volume      = 18,
     1726    number      = 5,
     1727    pages       = {393-401},
     1728}
     1729
     1730@manual{SIMULA87,
     1731    keywords    = {Simula standard},
     1732    contributer = {gjditchfield@plg},
     1733    title       = {Databehandling -- Programspr{\aa}k -- {SIMULA}},
     1734    organization= {Standardiseringskommissionen i Sverige},
     1735    note        = {Svensk Standard SS 63 61 14},
     1736    year        = 1987,
     1737    abstract    = {
     1738        Standard for the programming language SIMULA.  Written in English.
     1739    }
     1740}
     1741
     1742@article{Liskov75,
     1743    keywords    = {abstract data types, encapsulation, verification},
     1744    contributer = {gjditchfield@plg},
     1745    author      = {Barbara H. Liskov},
     1746    title       = {Data Types and Program Correctness},
     1747    journal     = sigplan,
     1748    year        = 1975,
     1749    month       = jul,
     1750    volume      = 10,
     1751    number      = 7,
     1752    pages       = {16-17},
     1753    summary     = {
     1754        Type definitions should contain the implementation of the type and
     1755        its operations.  The grouping makes programs simpler and more
     1756        understandable.  Encapsulating the definition aids verification and
     1757        forces a precise specification of the interface.
     1758    }
     1759}
     1760
     1761@article{dtav,
     1762    keywords    = {Russell, types},
     1763    contributer = {gjditchfield@plg},
     1764    author      = {James Donahue and Alan Demers},
     1765    title       = {Data Types are Values},
     1766    journal     = toplas,
     1767    month       = jul,
     1768    year        = 1985,
     1769    volume      = 7,
     1770    number      = 3,
     1771    pages       = {426-445},
     1772    comment     = {
     1773        Data types are sets of operations providing interpretations of
     1774        values from a meaningless, typeless universal value space.  Types
     1775        and operations are also contained in this value space.
     1776
     1777        Functions returning types replace generic types.
     1778
     1779        Polymorphic functions have type parameters.  Evaluation is not
     1780        macro expansion:
     1781        \begin{verbatim}
     1782            R == func [n:val integer; T:type[]] val integer
     1783                {if n > 0 => r[n-1, Array[1,10,T]] # n <= 0 => 17 fi}
     1784        \end{verbatim}
     1785    }
     1786}
     1787
     1788@article{Holt72,
     1789    keywords    = {concurrency, deadlock},
     1790    contributer = {pabuhr@plg},
     1791    author      = {Richard C. Holt},
     1792    title       = {Some Deadlock Properties of Computer Systems},
     1793    journal     = acmcs,
     1794    volume      = 4,
     1795    number      = 3,
     1796    month       = sep,
     1797    year        = 1972,
     1798    pages       = {179-196},
     1799}
     1800
     1801@misc{debug-malloc,
     1802    keywords    = {memory allocation debugger},
     1803    contributer = {gjditchfield@plg},
     1804    author      = {Conor P. Cahill},
     1805    title       = {debug\_malloc},
     1806    howpublished= {comp.sources.unix, volume 22, issue 112},
     1807    abstract    = {
     1808        This package is a collection of routines which are a drop-in
     1809        replacement for the malloc(3), memory(3), string(3), and bstring(3)
     1810        library functions.
     1811    }
     1812}
     1813
     1814@book{sml,
     1815    keywords    = {},
     1816    contributer = {pabuhr@plg},
     1817    author      = {Robin Milner and Mads Tofte and Robert Harper},
     1818    title       = {The Definition of Standard {ML}},
     1819    publisher   = {MIT Press},
     1820    address     = {Cambridge, Massachusetts, U.S.A.},
     1821    year        = 1990
     1822}
     1823
     1824@techreport{sml:old,
     1825    keywords    = {},
     1826    contributer = {gjditchfield@plg},
     1827    author      = {Robert Harper and Robin Milner and Mads Tofte},
     1828    title       = {The Definition of Standard {ML}, Version 2},
     1829    institution = {Department of Computer Science, University of Edinburgh},
     1830    year        = 1988,
     1831    address     = {The King's Buildings, Edinburgh EH9 3JZ},
     1832    type        = {LFCS Report Series}, month = aug, number = {ECS-LFCS-88-62}
     1833}
     1834
     1835@inproceedings{Reynolds72,
     1836    keywords    = {continuation},
     1837    contributer = {pabuhr@plg},
     1838    author      = {John Reynolds},
     1839    title       = {Definitional Interpreters for Higher Order Programming Languages},
     1840    booktitle   = {ACM Conference Proceedings},
     1841    organization= {ACM},
     1842    year        = 1972,
     1843    pages       = {717-740}
     1844}
     1845
     1846@article{Buhr16,
     1847    keywords    = {Dekker's algorithm, software solution, mutual exclusion, performance experiment},
     1848    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
     1849    title       = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
     1850    journal     = {Concurrency and Computation: Practice and Experience},
     1851    volume      = 28,
     1852    number      = 1,
     1853    pages       = {144-165},
     1854    month       = jan,
     1855    year        = 2016,
     1856}
     1857
     1858@misc{steelman,
     1859    keywords    = {Ada},
     1860    contributer = {gjditchfied@plg},
     1861    author      = {High Order Language Working Group},
     1862    title       = {Department of Defense Requirements for High Order Computer Programming Languages},
     1863    month       = jun, year = 1978,
     1864    note        = {Reprinted in \cite{pldesign}.}
     1865}
     1866
     1867@incollection{Tsay98,
     1868    keywords    = {local spins, mutual exclusion, read/write atomicity, refinement, scalability},
     1869    author      = {Yih-Kuen Tsay},
     1870    title       = {Deriving a scalable algorithm for mutual exclusion},
     1871    booktitle   = {Distributed Computing},
     1872    editor      = {Shay Kutten},
     1873    volume      = {1499},
     1874    series      = {LNCS},
     1875    publisher   = {Springer},
     1876    address     = {Berlin Heidelberg},
     1877    year        = {1998},
     1878    pages       = {393-407},
     1879}
     1880
     1881@article{Conway63,
     1882    keywords    = {coroutine, original},
     1883    contributer = {pabuhr@plg},
     1884    author      = {Melvin E. Conway},
     1885    title       = {Design of a Separable Transition-Diagram Compiler},
     1886    journal     = cacm,
     1887    month       = jul,
     1888    year        = 1963,
     1889    volume      = 6,
     1890    number      = 7,
     1891    pages       = {396-408},
     1892}
     1893
     1894@book{Stroustrup94,
     1895    keywords    = {C++},
     1896    contributor = {wyrmok@plg},
     1897    author      = {Bjarne Stroustrup},
     1898    title       = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     1899    publisher   = {Addison-Wesley},
     1900    year        = 1994
     1901}
     1902
     1903@inproceedings{st:concurrent,
     1904    keywords    = {concurrency, Smalltalk, futures},
     1905    contributer = {gjditchfield@plg},
     1906    author      = {Yasuhiko Yokote and Mario Tokoro},
     1907    title       = {The Design and Implementation of {ConcurrentSmalltalk}},
     1908    crossref    = "OOPSLA86",
     1909    pages       = {331-340},
     1910    comment     = {
     1911        Objects are ordinary Smalltalk objects or ``atomic'' objects, which
     1912        process messages one at a time in FIFO order.  Asynchronous method
     1913        calls are made by appending ``\&'' at the call site.  The sender does
     1914        not wait for a reply.  If the method returns a value, it
     1915        (immediately?) returns a CBox object, which is like a future.  The
     1916        sender can send the ``receive'' message to the CBox, which blocks
     1917        until the CBox contains a value.
     1918
     1919        A method can execute the ``\verb|^|'' statement to return an object
     1920        and terminate, or it can execute ``\verb|^^|'' to return an object
     1921        and continue execution.  If ``\verb|^^foo|'' is executed after
     1922        ``\verb|^^bar|'', foo is discarded, since bar has already been
     1923        returned.
     1924
     1925        The article does not say whether asynchronous messages can be sent
     1926        to ordinary objects, or whether ordinary messages can be sent to
     1927        atomic objects.
     1928    }
     1929}
     1930
     1931@inproceedings{Ichbiah83,
     1932    keywords    = {Ada, packages, generics},
     1933    contributer = {gjditchfield@plg},
     1934    author      = {Jean D. Ichbiah},
     1935    title       = {On the Design of {Ada}},
     1936    booktitle   = {Information Processing 83},
     1937    year        = 1983,
     1938    month       = sep, pages = {1-10},
     1939    editor      = {R. E. A. Mason},
     1940    organization= {IFIP},
     1941    publisher = {North-Holland},
     1942    summary = {
     1943        Packages group related declarations or subprograms, and encapsulate
     1944        data types.  Separate interfaces and bodies promotes information
     1945        hiding by removing the need to scan the body, allows the body to be
     1946        confidential, and provides a better specification of the contract
     1947        between client and implementor.  Generics are an efficient way to
     1948        factor out parts of similar definitions.
     1949    }
     1950}
     1951
     1952@book{Motet96,
     1953    keywords    = {Ada, exception handling},
     1954    contributer = {wyrmok@plg},
     1955    author      = {G. Motet and A. Mapinard and J. C. Geoffroy},
     1956    title       = {Design of Dependable {A}da Software},
     1957    publisher   = {Prentice Hall},
     1958    year        = 1996,
     1959}
     1960 
     1961@article{Richardson93,
     1962    keywords    = {C++, persistence, database},
     1963    contributer = {pabuhr@plg},
     1964    author      = {Joel E. Richardson and Michael J. Carey and Daniel T. Schuh},
     1965    title       = {The Design of the {E} Programming Language},
     1966    journal     = toplas,
     1967    month       = jul,
     1968    year        = 1993,
     1969    volume      = 15,
     1970    number      = 3,
     1971    pages       = {494-534},
     1972}
     1973
     1974@article{Hansen81b,
     1975    keywords    = {concurrency, monitor, critical region},
     1976    contributer = {pabuhr@plg},
     1977    author      = {Per {Brinch Hansen}},
     1978    title       = {The Design of {E}dison},
     1979    journal     = spe,
     1980    volume      = 11,
     1981    number      = 4,
     1982    month       = apr,
     1983    year        = 1981,
     1984    pages       = {363-396},
     1985}
     1986
     1987@book{Gamma95,
     1988    keywords    = {design patterns},
     1989    author      = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
     1990    title       = {Design Patterns: Elements of Reusable Object-Oriented Software},
     1991    publisher   = {Addison-Wesley},
     1992    year        = 1995,
     1993    series      = {Professional Computing Series},
     1994}
     1995
     1996@inproceedings{Wirth74,
     1997    keywords    = {},
     1998    contributer = {gjditchfield@plg},
     1999    author      = {Niklaus Wirth},
     2000    title       = {On the Design of Programming Languages},
     2001    booktitle   = {Information Processing 74},
     2002    year        = 1974,
     2003    pages       = {386-393},
     2004    publisher   = {North Holland Publishing Company},
     2005    note        = {Reprinted in \cite{pldesign}.}
     2006}
     2007
     2008@techreport{forceone,
     2009    keywords    = {Parametric polymorphism, ForceOne},
     2010    contributer = {gjditchfield@plg},
     2011    author      = {Andrew K. Wright},
     2012    title       = {Design of the Programming Language {ForceOne}},
     2013    institution = {University of Waterloo},
     2014    month       = feb, year = 1987,
     2015    number      = {CS-87-10}
     2016}
     2017
     2018@techreport{x-2,
     2019    keywords    = {object based},
     2020    contributer = {gjditchfield@plg},
     2021    author      = {David W. Sandberg},
     2022    title       = {The Design of the Programming Language {X-2}},
     2023    institution = {Oregon State University},
     2024    year        = 1985,
     2025    address     = {Department of Computer Science, Corvallis, Oregon, 97331},
     2026    number      = {85-60-1}
     2027}
     2028
     2029@article{design,
     2030    keywords    = {Smalltalk, designing classes},
     2031    contributer = {gjditchfield@plg},
     2032    author      = {Ralph E. Johnson and Brian Foote},
     2033    title       = {Designing Reusable Classes},
     2034    journal     = {Journal of Object-Oriented Programming},
     2035    year        = 1988,
     2036    volume      = 1, number = 2, pages = {22-35},
     2037    comment     = {
     2038        Abstract classes represent standard protocols.  ``It is better to
     2039        inherit from an abstract class than from a concrete class''.
     2040        Frameworks are collections of related abstract classes.  Successful
     2041        abstractions are discovered, not designed.
     2042
     2043        Protocols: ``If an operation X is implemented by performing a
     2044        similar operation on the components of the receiver, then that
     2045        operation should also be named X''.  Eliminate case analysis by
     2046        creating classes with the same operations.  Create classes to
     2047        represent bundles of parameters.  Shrink methods larger than 30
     2048        lines.
     2049
     2050        Hierarchies should be deep and narrow.  Subclasses should be
     2051        specializations.
     2052
     2053        Frameworks: split large classes.  Factor implementation differences
     2054        into subcomponents.  Separate methods that do not share instance
     2055        variables into components that reflect the different views of the
     2056        object.  Send messages to components, not self.  Reduce implicit
     2057        parameter passing through instance variables.
     2058    }
     2059}
     2060
     2061@article{dim:c++,
     2062    keywords    = {Dimensional Analysis, C++},
     2063    contributer = {gjditchfield@plg},
     2064    author      = {Robert F. Cmelic and Narain Gehani},
     2065    title       = {Dimensional Analysis with {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     2066    journal     = {IEEE Software},
     2067    month       = may, year = 1988,
     2068    volume      = 5, number = 3, pages = {21-29}
     2069}
     2070
     2071@article{Wegner87,
     2072    contributer = {pabuhr@plg},
     2073    author      = {Peter Wegner},
     2074    title       = {Dimensions of Object--Based Language Design},
     2075    journal     = sigplan,
     2076    volume      = 22,
     2077    number      = 12,
     2078    month       = dec,
     2079    year        = 1987,
     2080    pages       = {168-182},
     2081    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
     2082}
     2083
     2084@book{Dijkstra76,
     2085    keywords    = {concurrent assignment},
     2086    author      = {E. W. Dijkstra},
     2087    title       = {A Discipline of Programming},
     2088    publisher   = {Prentice-Hall},
     2089    year        = 1976,
     2090}
     2091
     2092@book{Lynch96,
     2093    keywords    = {distributed algorithms},
     2094    author      = {Nancy A. Lynch},
     2095    title       = {Distributed Algorithms},
     2096    publisher   = {Morgan Kaufmann},
     2097    year        = 1996,
     2098}
     2099
     2100@book{Tanenbaum02,
     2101    keywords    = {distributed programming},
     2102    author      = {Andrew S. Tanenbaum and Maarten van Steen},
     2103    title       = {Distributed Systems: Principles and Paradigms},
     2104    publisher   = {Prentice-Hall},
     2105    year        = 2002,
     2106}
     2107
     2108@inproceedings{Cargill90,
     2109    keywords    = {concurrency},
     2110    contributer = {pabuhr@plg},
     2111    author      = {Tom A. Cargill},
     2112    title       = {Does {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Really Need Multiple Inheritance?},
     2113    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
     2114    organization= {USENIX Association},
     2115    address     = {San Francisco, California, U.S.A.},
     2116    month       = apr,
     2117    year        = 1990,
     2118    pages       = {315-323}
     2119}
     2120
     2121@unpublished{Duff83,
     2122    keywords    = {C, switch statement, control flow},
     2123    contributer = {pabuhr@plg},
     2124    author      = {Tom Duff},
     2125    title       = {Duff's Device},
     2126    month       = nov,
     2127    year        = 1983,
     2128    note        = {\href{http://www.lysator.liu.se/c/duffs-device.html}{http://\-www.lysator.liu.se/\-c/\-duffs-device.html}}
     2129}
     2130
     2131@manual{dwarf2,
     2132    keywords    = {Debugging DWARF2 specification},
     2133    contributer = {rkrische@plg},
     2134    title       = {DWARF Debugging Information Format},
     2135    organization= {Unix International Programming Languages SIG},
     2136    publisher   = {Unix International},
     2137    address     = {Waterview Corporate Center, 20 Waterview Boulevard, Parsippany, NJ 07054},
     2138    year        = {1993}
     2139}
     2140
     2141@article{classicada,
     2142    keywords    = {Classic Ada},
     2143    contributer = {gjditchfield@plg},
     2144    author      = {Cameron M. Donaldson},
     2145    title       = {Dynamic Binding and Inheritance in an Object-Oriented {Ada} Design},
     2146    journal     = {Journal of Pascal, {Ada} \& Modula-2},
     2147    year        = 1990,
     2148    month       = {jul/aug}, volume = 9, number = 4, pages = {12-19},
     2149    comment     = {
     2150        Classes are like packages: they can contain subprograms, types,
     2151        variables, generic instantiations, and exceptions.  They can also
     2152        contain class methods, instance methods, and instance variables,
     2153        and define creation and initialization subprograms or methods for
     2154        instances.  Single inheritance provides inheritance of
     2155        implementations. Dynamic binding is done with a {\em send}
     2156        statement that invokes a class or instance method.  A preprocessor
     2157        converts Classic Ada to normal Ada.
     2158    }
     2159}
     2160
     2161@article{Costanza03,
     2162    keywords    = {dynamic call},
     2163    contributer = {pabuhr@plg},
     2164    author      = {Pascal Costanza},
     2165    title       = {Dynamic Scoped Functions as the Essence of {AOP}},
     2166    journal     = sigplan,
     2167    volume      = 38,
     2168    number      = 8,
     2169    month       = aug,
     2170    year        = 2003,
     2171    pages       = {29-35},
     2172}
     2173
     2174% E
     2175
     2176@inproceedings{Wegbreit71,
     2177    keywords    = {polymorphism},
     2178    contributer = {pabuhr@plg},
     2179    author      = {B. Wegbreit},
     2180    title       = {The ECL Programming System},
     2181    booktitle   = {Proceedings of AFIPS 1971 FJCC},
     2182    publisher   = {AFIPS Press, vol. 39},
     2183    address     = {Montvale, New Jersey, U.S.A},
     2184    year        = 1971,
     2185    pages       = {253-262},
     2186}
     2187
     2188@manual{JavaScript,
     2189    keywords    = {JavaScript},
     2190    contributer = {pabuhr},
     2191    title       = {ECMAScript 2015 Language Specification {JavaScript}},
     2192    organization= {ECAM International},
     2193    address     = {Rue du Rhone 114, CH-1204 Geneva, Switzerland},
     2194    month       = jun,
     2195    year        = 2015,
     2196    note        = {6th Edition}
     2197}
     2198
     2199@inproceedings{Peterson77,
     2200    keywords    = {N-thread software-solution mutual exclusion},
     2201    contributer = {pabuhr@plg},
     2202    author      = {Gary L. Peterson and Michael J. Fischer},
     2203    title       = {Economical Solutions for the Critical Section Problem in a Distributed System (Extended Abstract)},
     2204    booktitle   = {Proceedings of the Ninth Annual ACM Symposium on Theory of Computing},
     2205    series      = {STOC '77},
     2206    year        = 1977,
     2207    location    = {Boulder, Colorado, USA},
     2208    pages       = {91--97},
     2209    numpages    = {7},
     2210    publisher   = {ACM},
     2211    address     = {New York, NY, USA},
     2212}
     2213
     2214@article{Hansen81a,
     2215    keywords    = {concurrency, monitor, critical region},
     2216    contributer = {pabuhr@plg},
     2217    author      = {Per {Brinch Hansen}},
     2218    title       = {{E}dison---a Multiprocessor Language},
     2219    journal     = spe,
     2220    volume      = 11,
     2221    number      = 4,
     2222    month       = apr,
     2223    year        = {1981},
     2224    pages       = {325-361},
     2225}
     2226
     2227@book{Eiffel,
     2228    keywords    = {Eiffel},
     2229    contributer = {pabuhr@plg},
     2230    author      = {Bertrand Meyer},
     2231    title       = {Eiffel: The Language},
     2232    publisher   = {Prentice-Hall},
     2233    year        = 1992,
     2234    series      = {Prentice Hall Object-Oriented Series},
     2235}
     2236
     2237@article{WS:overload,
     2238    keywords    = {compilation},
     2239    contributer = {gjditchfield@plg},
     2240    author      = {Peter J. L. Wallis and Bernhard W. Silverman},
     2241    title       = {Efficient Implementation of the {Ada} Overloading Rules},
     2242    journal     = ipl,
     2243    year        = 1980,
     2244    month       = apr, volume = 10, number = 3, pages = {120-123},
     2245    comment     = {
     2246        The ``two-pass'' algorithm.  An upward pass over a parse tree
     2247        calculates the set of possible result types of operators.  The
     2248        root must have exactly one type, produced in one way.  A
     2249        downward pass selects the version of the operator that produces the
     2250        desired result type, thus setting the result types of subtrees.
     2251        See \cite{D:overload}.
     2252    }
     2253}
     2254
     2255@techreport{Habermann80,
     2256    keywords    = {Ada, threads},
     2257    contributer = {pabuhr@plg},
     2258    author      = {A. N. Habermann and I. R. Nassi},
     2259    title       = {Efficient Implementation of {Ada} Tasks},
     2260    institution = {Carnegie-Mellon University},
     2261    number      = {CMU-CS-80-103},
     2262    year        = 1980
     2263}
     2264
     2265@article{Emerald,
     2266    keywords    = {concurrency, polymorphism},
     2267    contributer = {pabuhr@plg},
     2268    author      = {Rajendra K. Raj and Ewan Tempero and Henry M. Levy and Andrew P. Black and Norman C. Hutchinson and Eric Jul},
     2269    title       = {Emerald: A General-Purpose Programming Language},
     2270    journal     = spe,
     2271    month       = jan,
     2272    year        = 1991,
     2273    volume      = 21,
     2274    number      = 1,
     2275    pages       = {91-118}
     2276}
     2277
     2278@InProceedings{chambers89a,
     2279    keywords    = {maps, delegation},
     2280    author      = "Craig Chambers and David Ungar and Elgin Lee",
     2281    title       = "An Efficient Implementation of {SELF}, a Dynamically-Typed
     2282                 Object-Oriented Language Based on Prototypes",
     2283    crossref    = "OOPSLA89",
     2284    pages       = {49-70}
     2285}
     2286
     2287@article{oop:encapsulation,
     2288    keywords    = {Encapsulation, Inheritance, Subclasses, Multiple Inheritance},
     2289    contributer = {gjditchfield@plg},
     2290    author      = {Alan Snyder},
     2291    title       = {Encapsulation and Inheritance in Object-Oriented Programming
     2292        Languages},
     2293    journal     = sigplan,
     2294    volume      = {21},    number = {11},
     2295    pages       = {38-45},
     2296    month       = nov, year = 1986,
     2297    comment     = {
     2298        Client, child interfaces should be distinct.  Child interface
     2299        shouldn't grant total access to parent.
     2300
     2301        Rules for redefining parent variable name in a child affect
     2302        re-implementation of the parent.
     2303
     2304        Inheritance can be a promise to obey the semantics of the parent,
     2305        or code reuse; the two may be contradictory.  Unification
     2306        exposes use of inheritance: a child can not be re-implemented
     2307        without breaking code that assumes that it is a subclass of the
     2308        original parent.  If a class uses the names of its parents'
     2309        ancestors, then inheritance is part of the parent's child
     2310        interface.
     2311
     2312        Linearizing a multiple inheritance tree means that a class's use of
     2313        calls on super need to be understood before it is used as a parent.
     2314        Merging repeated ancestors exposes inheritance if an ancestor is
     2315        re-implemented.  Forbidding inheritance of distinct methods with
     2316        the same name exposes implementation of ancestors.  Proposed
     2317        solution treats the set of ancestors as a tree.
     2318    }
     2319}
     2320
     2321@article{st:encapsulator,
     2322    keywords    = {encapsulator, Smalltalk, monitor},
     2323    contributer = {gjditchfield@plg},
     2324    author      = {Geoffrey A. Pascoe},
     2325    title       = {Encapsulators: A New Software Paradigm in Smalltalk-80},
     2326    journal     = sigplan,
     2327    volume      = {21},    number       = {11},
     2328    pages       = {341-346},
     2329    month       = nov, year = 1986,
     2330    comment     = {
     2331        Encapsulators are objects that surround other objects.
     2332        Pre- and post-actions are performed when messages are sent to the
     2333        encapsulated object.  They are created here by sending the message
     2334        object: to an encapsulator class.  Examples given are monitors,
     2335        atomic objects, and Model (for model-view-controller interfaces).
     2336
     2337        Encapsulator classes use a family of selectors that the
     2338        encapsulated object will not respond to.  Messages for the
     2339        encapsulated object are passed on by trapping them with the
     2340        doesNotUnderstand method.  Various fiddles were needed when setting
     2341        up the class and metaclass hierarchies.  A few selectors (==,
     2342        class) always directly invoke primitive methods; they can't be
     2343        used.
     2344
     2345        Can an encapsulated object be an encapsulator?  Probably, but the
     2346        middle object's selectors are inaccessible.
     2347    }
     2348}
     2349
     2350@manual{EPT,
     2351    keywords    = {concurrency, light-weight threads},
     2352    contributer = {pabuhr@plg},
     2353    key         = {Encore},
     2354    title       = {Encore Parallel Thread Manual, 724-06210},
     2355    organization= {Encore Computer Corporation},
     2356    month       = may,
     2357    year        = 1988,
     2358}
     2359
     2360@manual{Erlang,
     2361    keywords    = {Erlang},
     2362    contributer = {pabuhr},
     2363    title       = {Erlang Reference Manual User's Guide, Vertion 7.0},
     2364    organization= {Erlang/OTP System Documentation},
     2365    address     = {1430 Broadway, New York, New York  10018},
     2366    month       = jun,
     2367    year        = 2015,
     2368    note        = {\href{http://www.erlang.org/doc/pdf/otp-system-documentation.pdf}{\textsf{http://www.erlang.org/\-doc/\-pdf/\-otp-system-documentation.pdf}}},
     2369}
     2370
     2371@inproceedings{MH88,
     2372    keywords    = {modules, general sums, general products},
     2373    contributer = {gjditchfield@plg},
     2374    author      = {John C. Mitchell and Robert Harper},
     2375    title       = {The Essence of {ML}},
     2376    booktitle   = popl,
     2377    year        = 1988,
     2378    pages       = {28-46}
     2379}
     2380
     2381@book{LeVerrand,
     2382    keywords    = {},
     2383    author      = {D. Le Verrand},
     2384    title       = {Evaluating {Ada}},
     2385    publisher   = {North Oxford Academic},
     2386    year        = 1985
     2387}
     2388
     2389@inproceedings{Bloom79,
     2390    keywords    = {concurrency},
     2391    contributer = {pabuhr@plg},
     2392    author      = {Toby Bloom},
     2393    title       = {Evaluating Synchronization Mechanisms},
     2394    booktitle   = {Proceedings of the Seventh Symposium on Operating Systems Principles},
     2395    organization= {ACM SIGOPS},
     2396    address     = {Pacific Grove, California, U.S.A},
     2397    month       = dec,
     2398    year        = 1979,
     2399    pages       = {24-32}
     2400}
     2401
     2402@article{Buhr06a,
     2403    keywords    = {concurrency, C++, uC++},
     2404    contributer = {pabuhr@plg},
     2405    author      = {Peter A. Buhr and Richard C. Bilson},
     2406    title       = {Examining $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} :
     2407                   High-level Object-Oriented Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     2408    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
     2409    month       = feb,
     2410    year        = 2006,
     2411    volume      = 31,
     2412    number      = 2,
     2413    pages       = {36-40},
     2414}
     2415
     2416@article{ExceptionalC,
     2417    keywords    = {exception handling, asynchronous events},
     2418    contributer = {wyrmok@plg},
     2419    author      = {N. H. Gehani},
     2420    title       = {Exceptional {C} or {C} with Exceptions},
     2421    journal     = spe,
     2422    year        = 1992,
     2423    month       = oct,
     2424    volume      = 22,
     2425    number      = 10,
     2426    pages       = {827-848},
     2427    comment     = {
     2428        It is the most extensive exceptional handling mechanism thus
     2429        far. Though it doesn't have Mesa resumption, it has
     2430        asynchronous signal which is more general and abstract than
     2431        the unix signal mechanism.  It has an Eiffel like retry
     2432        mechanism. Consequently, the scope of guarded region is not
     2433        immediately terminated when an exception is raised. In fact,
     2434        an exception handler creates a scope under its guarded
     2435        region.
     2436        }
     2437}
     2438
     2439@incollection{Buhr02,
     2440    keywords    = {exception handling},
     2441    contributer = {pabuhr@plg},
     2442    author      = {Peter A. Buhr and Ashif Harji and W. Y. Russell Mok},
     2443    title       = {Exception Handling},
     2444    editor      = {Marvin V. Zelkowitz},
     2445    booktitle   = {Advances in COMPUTERS},
     2446    publisher   = {Academic Press},
     2447    volume      = 56,
     2448    year        = 2002,
     2449    pages       = {245-303},
     2450}
     2451
     2452@article{Cargill94,
     2453    keywords    = {exception handling},
     2454    contributer = {pabuhr@plg},
     2455    author      = {Tom Cargill},
     2456    title       = {Exception Handling: a False Sense of Security},
     2457    journal     = {{C}{\kern-.2em\hbox{\large\texttt{+\kern-.2em+}}} Report},
     2458    year        = 1994,
     2459    month       = nov,
     2460    volume      = 6,
     2461    number      = 9,
     2462    note        = {http://www.informit.com/\-content/\-images/\-020163371x/\-supplements/\-Exception\_\-Handling\_\-Article.\-html}
     2463}
     2464
     2465@article{Knudsen84,
     2466    keywords    = {static exception handling, BETA, sequel},
     2467    contributer = {wyrmok@plg},
     2468    author      = {J{\o}rgen Lindskov Knudsen},
     2469    title       = {Exception Handling --- A Static Approach},
     2470    journal     = spe,
     2471    year        = 1984,
     2472    month       = may,
     2473    volume      = 14,
     2474    number      = 5,
     2475    pages       = {429-449},
     2476}
     2477
     2478@article{Drew94,
     2479    keywords    = {exceptions, exception handling},
     2480    contributer = {wyrmok@plg},
     2481    author      = {Steven J. Drew and K. John Gough},
     2482    title       = {Exception Handling: Expecting the Unexpected},
     2483    journal     = {Computer Languages},
     2484    year        = 1994,
     2485    month       = may,
     2486    volume      = 20,
     2487    number      = 2,
     2488    comment     = {
     2489        A recent and good survey on various exception handling mechanisms found
     2490        in imperative programming languages. It classifies various mechanism in
     2491        terms of flow control and scopes. Asynchronous exceptions and signals
     2492        are also covered as Exceptional C is in the survey.
     2493        }
     2494}
     2495
     2496@article{Koenig90,
     2497    keywords    = {exception handling},
     2498    contributer = {pabuhr@plg},
     2499    author      = {Andrew Koenig and Bjarne Stroustrup},
     2500    title       = {Exception Handling for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     2501    journal     = joop,
     2502    month       = {July/August},
     2503    year        = 1990,
     2504    volume      = 3,
     2505    number      = 2,
     2506    pages       = {16-33},
     2507}
     2508
     2509@article{Lee83,
     2510    keywords    = {exception handling, C},
     2511    contributer = {pabuhr@plg},
     2512    author      = {P. A. Lee},
     2513    title       = {Exception Handling in {C} Programs},
     2514    journal     = spe,
     2515    volume      = 13,
     2516    number      = 5,
     2517    month       = may,
     2518    year        = 1983,
     2519    pages       = {389-405},
     2520}
     2521
     2522@article{Liskov79,
     2523    keywords    = {exception handling},
     2524    contributer = {pabuhr@plg},
     2525    author      = {Barbara H. Liskov and Alan Snyder},
     2526    title       = {Exception Handling in {CLU}},
     2527    journal     = ieeese,
     2528    month       = nov,
     2529    year        = 1979,
     2530    volume      = {SE-5},
     2531    number      = 6,
     2532    pages       = {546-558},
     2533}
     2534
     2535@article{Szalas85,
     2536    keywords    = {concurrency, C++},
     2537    contributer = {pabuhr@plg},
     2538    author      = {Andrzej Szalas and Danuta Szczepanska},
     2539    title       = {Exception Handling in Parallel Computations},
     2540    journal     = sigplan,
     2541    volume      = 20,
     2542    number      = 10,
     2543    month       = oct,
     2544    year        = 1985,
     2545    issn        = {0362-1340},
     2546    pages       = {95-104},
     2547    url         = {http://doi.acm.org/10.1145/382286.382385},
     2548    doi         = {http://doi.acm.org/10.1145/382286.382385},
     2549    acmid       = {382385},
     2550    publisher   = {ACM},
     2551    address     = {New York, NY, USA},
     2552}
     2553
     2554@article{MacLaren77,
     2555    keywords    = {exception handling, PL/I},
     2556    contributer = {pabuhr@plg},
     2557    author      = {M. Donald MacLaren},
     2558    title       = {Exception Handling in {PL/I}},
     2559    journal     = sigplan,
     2560    volume      = 12,
     2561    number      = 3,
     2562    month       = mar,
     2563    year        = 1977,
     2564    pages       = {101-104},
     2565    note        = {Proceedings of an ACM Conference on Language Design for Reliable Software,
     2566                   March 28--30, 1977, Raleigh, North Carolina, U.S.A.},
     2567}
     2568
     2569@article{Goodenough75,
     2570    keywords    = {exception handling},
     2571    contributer = {pabuhr@plg},
     2572    author      = {J. B. Goodenough},
     2573    title       = {Exception Handling: Issues and a Proposed Notation},
     2574    journal     = cacm,
     2575    month       = dec,
     2576    year        = 1975,
     2577    volume      = 18,
     2578    number      = 12,
     2579    pages       = {683-696},
     2580}
     2581
     2582@article{Lampson80,
     2583    keywords    = {monitors},
     2584    contributer = {pabuhr@plg},
     2585    author      = {B. W. Lampson and D. D. Redell},
     2586    title       = {Experience with Processes and Monitors in Mesa},
     2587    journal     = cacm,
     2588    volume      = 23,
     2589    number      = 2,
     2590    month       = feb,
     2591    year        = 1980,
     2592    pages       = {105-117},
     2593}
     2594
     2595@inproceedings{Shopiro87,
     2596    keywords    = {concurrency},
     2597    contributer = {pabuhr@plg},
     2598    author      = {Jonathan E. Shopiro},
     2599    title       = {Extending the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Task System for Real-Time Control},
     2600    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
     2601    organization= {USENIX Association},
     2602    address     = {Santa Fe, New Mexico, U.S.A},
     2603    month       = nov,
     2604    year        = 1987,
     2605    pages       = {77-94}
     2606}
     2607
     2608@article{Modula-2+,
     2609    keywords    = {Modula-2, exceptions, garbage collection, concurrency},
     2610    contributer = {gjditchfield@plg},
     2611    author      = {Paul Rovner},
     2612    title       = {Extending Modula-2 to Build Large, Integrated Systems},
     2613    journal     = {IEEE Software},
     2614    month       = nov, year = 1986,
     2615    volume      = 3, number = 6, pages = {46-57},
     2616    comment     = {
     2617        Exceptions can have a parameter.  Procedures can declare the
     2618        exceptions they can propagate; others are converted to {\tt
     2619        SYSTEM.Fail}.  If they don't, all exceptions propagate.
     2620        Block cleanup statements execute no matter how control leaves the
     2621        block.
     2622
     2623        {\tt REF t} is a garbage-collected pointer.  A {\tt REFANY} can be
     2624        assigned any {\tt REF t}.  Open array types can be used in
     2625        parameter and {\tt REF} types.  {\tt NEW} creates arrays of fixed,
     2626        dynamically determined size.
     2627
     2628        The {\tt THREAD} module provides lightweight processes, semaphores,
     2629        and conditions.  A statement {\tt LOCK {\em semaphore} DO
     2630        {\em statements} END} is built in.
     2631
     2632        {\tt SAFE} modules do run-time checks, and only import {\tt
     2633        SAFE} modules.  One implementation module can implement several
     2634        definition modules.  Opaque type implementations can be
     2635        repeated in modules that import its definition, so implementation
     2636        modules can collaborate.  The linker checks that all
     2637        implementations are the same.
     2638    }
     2639}
     2640
     2641@inproceedings{BNRPascal,
     2642    keywords    = {concurrency, rendezvous},
     2643    contributer = {pabuhr@plg},
     2644    author      = {R. Kamel and N. Gammage},
     2645    title       = {Experience with Rendezvous},
     2646    booktitle   = {Proceedings of the 1988 International Conference on Computer Languages},
     2647    month       = oct,
     2648    year        = 1988,
     2649    pages       = {143-149}
     2650}
     2651
     2652% F
     2653
     2654@inproceedings{Knudsen01,
     2655    keywords    = {Beta, exception handling},
     2656    contributer = {pabuhr@plg},
     2657    author      = {J{\o}rgen Lindskov Knudsen},
     2658    title       = {Fault Tolerance and Exception Handling in {BETA}},
     2659    booktitle   = {Exception Handling},
     2660    publisher   = {Springer-Verlag},
     2661    volume      = 2022,
     2662    series      = {Lecture Notes in Computer Science},
     2663    year        = 2001,
     2664    pages       = {1-17}
     2665}
     2666
     2667@article{Lamport87,
     2668    keywords    = {software solutions, mutual exclusion, fast},
     2669    contributer = {pabuhr@plg},
     2670    author      = {Leslie Lamport},
     2671    title       = {A Fast Mutual Exclusion Algorithm},
     2672    journal     = tocs,
     2673    volume      = 5,
     2674    number      = 1,
     2675    month       = jan,
     2676    year        = {1987},
     2677    pages       = {1--11},
     2678    publisher   = {ACM},
     2679    address     = {New York, NY, USA},
     2680}
     2681
     2682@inproceedings{F-bound,
     2683    keywords    = {},
     2684    contributer = {gjditchfield@plg},
     2685    author      = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
     2686    title       = {F-Bounded Polymorphism for Object-Oriented Programming},
     2687    booktitle   = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
     2688    year        = 1989,
     2689    month       = sep,
     2690    pages       = {273-280}
     2691}
     2692
     2693@mastersthesis{Wasik08,
     2694    author      = {Ayelet Wasik},
     2695    title       = {Features of a Multi-Threaded Memory Allocator},
     2696    school      = {University of Waterloo},
     2697    year        = 2008,
     2698    month       = jan,
     2699    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     2700    note        = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
     2701}
     2702
     2703@article{Holzmann94,
     2704    keywords    = {semaphore, flags},
     2705    contributer = {pabuhr@plg},
     2706    author      = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
     2707    title       = {The First Data Networks},
     2708    journal     = {Scientific American},
     2709    month       = jan,
     2710    year        = 1994,
     2711    volume      = 12,
     2712    number      = 1,
     2713    pages       = {124-129},
     2714}
     2715
     2716@article{Bohm66,
     2717    keywords    = {goto, structured programming},
     2718    contributer = {pabuhr@plg},
     2719    author      = {C. B\"{o}hm and G. Jacopini},
     2720    title       = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
     2721    journal     = cacm,
     2722    month       = may,
     2723    year        = 1966,
     2724    volume      = 9,
     2725    number      = 5,
     2726    pages       = {366-371},
     2727}
     2728
     2729@manual{Fortran95,
     2730    keywords    = {Fortran 95},
     2731    contributer = {pabuhr@plg},
     2732    key         = {Fortran95},
     2733    title       = {Fortran 95 Standard, ISO/IEC 1539},
     2734    organization = {Unicomp, Inc.},
     2735    address     = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
     2736    month       = jan,
     2737    year        = 1997,
     2738}
     2739
     2740@manual{Fortran08,
     2741    keywords    = {ISO/IEC Fortran 08},
     2742    contributer = {pabuhr@plg},
     2743    key         = {Fortran08},
     2744    title       = {Programming Languages -- {Fortran} Part 1},
     2745    organization= {International Standard ISO/IEC 1989:2014},
     2746    publisher   = {International Standard Organization},
     2747    address     = {http://www.iso.org},
     2748    year        = 2010,
     2749}
     2750
     2751@book{Andrews00:book,
     2752    keywords    = {concurrency},
     2753    contributer = {pabuhr@plg},
     2754    author      = {Gregory R. Andrews},
     2755    title       = {Foundations of Multithreaded, Parallel and Distributed Programming},
     2756    publisher   = {Addison--Wesley},
     2757    year        = 2000,
     2758}
     2759
     2760@article{Agha89,
     2761    keywords    = {actors, concurrency},
     2762    contributer = {pabuhr@plg},
     2763    author      = {Gul A. Agha},
     2764    title       = {Foundational Issues in Concurrent Computing},
     2765    journal     = sigplan,
     2766    month       = apr,
     2767    year        = 1989,
     2768    volume      = 24,
     2769    number      = 4,
     2770    pages       = {60-65},
     2771    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
     2772                   Sept. 26--27, 1988, San Diego, California, U.S.A},
     2773}
     2774
     2775@article{ool,
     2776    keywords    = {},
     2777    contributer = {gjditchfield@plg},
     2778    author      = {Douglas T. Ross},
     2779    title       = {Toward Foundations for the Understanding of Type},
     2780    journal     = sigplan,
     2781    year        = 1976,
     2782    volume      = 11, pages = {63-65},
     2783    note        = {Conference on Data: Abstraction, Definition and Structure},
     2784    summary     = {
     2785        Possibly the first use (without definition, alas) of the phrase
     2786        "object oriented language".  Metaphysical to the point of incoherence.
     2787    }
     2788}
     2789
     2790@article{frames,
     2791    keywords    = {frames},
     2792    contributer = {gjditchfield@plg},
     2793    author      = {Paul G. Basset},
     2794    title       = {Frame-Based Software Engineering},
     2795    journal     = {IEEE Software},
     2796    month       = jul, year = 1987,
     2797    volume      = 4, number = 4, pages = {9-16}
     2798}
     2799
     2800@article{Sutter05,
     2801    keywords    = {concurrency, C++},
     2802    contributer = {pabuhr@plg},
     2803    author      = {Herb Sutter},
     2804    title       = {A Fundamental Turn Toward Concurrency in Software},
     2805    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
     2806    month       = mar,
     2807    year        = 2005,
     2808    volume      = 30,
     2809    number      = 3,
     2810    pages       = {16-22},
     2811}
     2812
     2813@inproceedings{Dony01,
     2814    keywords    = {Smalltalk, exception handling},
     2815    contributer = {pabuhr@plg},
     2816    author      = {Chistophe Dony},
     2817    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
     2818    booktitle   = {Exception Handling},
     2819    publisher   = {Springer-Verlag},
     2820    volume      = 2022,
     2821    series      = {Lecture Notes in Computer Science},
     2822    year        = 2001,
     2823    pages       = {18-38}
     2824}
     2825
     2826@misc{FW,
     2827    key         = {FW},
     2828    contributer = {gjditchfield@plg},
     2829    title       = {Funk \& Wagnalls Standard Desk Dictionary},
     2830    year        = 1980
     2831}
     2832
     2833@book{Knuth73V1,
     2834    contributer = {pabuhr@plg},
     2835    author      = {Donald E. Knuth},
     2836    title       = {Fundamental Algorithms},
     2837    series      = {The Art of Computer Programming},
     2838    publisher   = {Addison-Wesley},
     2839    year        = 1973,
     2840    volume      = 1,
     2841    edition     = {second},
     2842}
     2843
     2844@inproceedings{Strachey,
     2845    keywords    = {polymorphism},
     2846    contributer = {gjditchfield@plg},
     2847    author      = {C. Strachey},
     2848    title       = {Fundamental Concepts in Programming Languages},
     2849    booktitle   = {Lecture Notes for the International Summer School in Computer Programming},
     2850    year        = 1967,
     2851    month       = aug,
     2852    address     = {Copenhagen},
     2853    comment     = {
     2854        Defines ad-hoc and parametric polymorphism.
     2855    }
     2856}
     2857
     2858@article{Eisenberg72,
     2859    keywords    = {concurrency, N-Process solution, O(N)},
     2860    contributer = {pabuhr@plg},
     2861    author      = {Murray A. Eisenberg and Michael R. McGuire},
     2862    title       = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
     2863    journal     = cacm,
     2864    month       = nov,
     2865    year        = 1972,
     2866    volume      = 15,
     2867    number      = 11,
     2868    pages       = {999},
     2869}
     2870
     2871% G
     2872
     2873@article{Boehm88,
     2874    keywords    = {conservative garbage collection, C},
     2875    contributer = {gjditchfield@plg},
     2876    author      = {Hans-Juergen Boehm and Mark Weiser},
     2877    title       = {Garbage Collection in an Uncooperative Environment},
     2878    journal     = spe,
     2879    month       = sep,
     2880    year        = 1988,
     2881    volume      = 18,
     2882    number      = 9,
     2883    pages       = {807-820}
     2884}
     2885
     2886@manual{gcc,
     2887    keywords    = {},
     2888    contributer = {gjditchfield@plg},
     2889    title       = {GCC},
     2890    author      = {Richard M. Stallman},
     2891    organization= {Free Software Foundation},
     2892    address     = {Cambridge, MA}
     2893}
     2894
     2895@article{doUpon,
     2896    keywords    = {formal verification, axiomatic semantics, control structures},
     2897    contributer = {gjditchfield@plg},
     2898    author      = {Ed Anson},
     2899    title       = {A Generalized Iterative Construct and Its Semantics},
     2900    journal     = toplas,
     2901    volume      = {9},    number = {4},
     2902    pages       = {567-581},
     2903    month       = oct, year = 1987,
     2904    comment     = {
     2905        \begin{verbatim}
     2906            do
     2907                   P1 -> L1
     2908               [] P2 -> L2
     2909            ...
     2910               [] Pm -> Lm
     2911            upon
     2912                   Q1 -> M1
     2913               [] Q2 -> M2
     2914            ...
     2915               [] qn -> mn
     2916            od
     2917        \end{verbatim}
     2918
     2919        If there is an i such that Qi is true, execute Mi and terminate.
     2920        Otherwise, if there is an i such that Pi is true, execute Li and
     2921        repeat the loop.  Otherwise, fail.
     2922    }
     2923}
     2924
     2925@unpublished{Bilson,
     2926    keywords    = {generic programming, generics, polymorphism},
     2927    contributor = {a3moss@plg},
     2928    author      = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
     2929    title       = {Generic Programming with Inferred Models},
     2930}
     2931
     2932
     2933@article{Haskell,
     2934    keywords    = {lazy evaluation, type class},
     2935    contributer = {pabuhr},
     2936    author      = {Paul Hudak and Joseph H. Fasel},
     2937    title       = {A Gentle Introduction to Haskell},
     2938    journal     = sigplan,
     2939    volume      = 27,
     2940    number      = 5,
     2941    month       = may,
     2942    year        = 1992,
     2943    pages       = {T1-53},
     2944}
     2945
     2946@manual{Go,
     2947    keywords    = {Go programming language},
     2948    contributer = {pabuhr@plg},
     2949    title       = {{Go} Programming Language},
     2950    author      = {Robert Griesemer and Rob Pike and Ken Thompson},
     2951    organization= {Google},
     2952    year        = 2009,
     2953    note        = {\href{http://golang.org/ref/spec}{http://golang.org/\-ref/\-spec}},
     2954}
     2955
     2956@article{Dijkstra68a,
     2957    keywords    = {goto},
     2958    contributer = {pabuhr@plg},
     2959    author      = {Edsger W. Dijkstra},
     2960    title       = {Go To Statement Considered Harmful},
     2961    journal     = cacm,
     2962    month       = mar,
     2963    year        = 1968,
     2964    volume      = 11,
     2965    number      = 3,
     2966    pages       = {147-148},
     2967    note        = {Reprinted in \cite{Yourdon79} pp. 29--36.},
     2968}
     2969
     2970@article{Choi91,
     2971    keywords    = {contra-variance, functions},
     2972    contributer = {pabuhr@plg},
     2973    author      = {Injun Choi and Michael V. Mannino},
     2974    title       = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
     2975    journal     = {OOPS Messenger},
     2976    volume      = 2,
     2977    number      = 1,
     2978    month       = jan,
     2979    year        = 1991,
     2980    pages       = {38-54},
     2981}
     2982
     2983@misc{GNU-C,
     2984    keywords    = {C, ANSI C},
     2985    contributer = {pabuhr@plg},
     2986    author      = {Richard Stallman},
     2987    title       = {The Free Software Foundation's Gnu {C} Compiler},
     2988    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
     2989    year        = 1989,
     2990}
     2991
     2992@article{Dijkstra:green,
     2993    keywords    = {ada},
     2994    contributer = {gjditchfield@plg},
     2995    author      = {Edsger W. Dijkstra},
     2996    title       = {On the GREEN Language submitted to the DoD},
     2997    journal     = sigplan,
     2998    year        = 1978,
     2999    month       = oct,
     3000    volume      = 13,
     3001    number      = 10,
     3002    pages       = {16-21}
     3003}
     3004
     3005@inproceedings{Miller02,
     3006    keywords    = {exception handling},
     3007    contributer = {pabuhr@plg},
     3008    author      = {Robert Miller and Anand Tripathi},
     3009    title       = {The Guardian Model for Exception Handling in Distributed Systems},
     3010    booktitle   = {21st Symposium on Reliable Distributed Systems},
     3011    organization= {IEEE},
     3012    address     = {Suita, Japan},
     3013    year        = 2002,
     3014    month       = oct,
     3015    pages       = {304-313}
     3016}
     3017
     3018@phdthesis{Chen09,
     3019    author      = {Jun Chen},
     3020    title       = {Guided Testing of Concurrent Programs Using Value Schedules},
     3021    school      = {University of Waterloo},
     3022    year        = 2009,
     3023    month       = sep,
     3024    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     3025    note        = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
     3026}
     3027
     3028@misc{GNU-C++,
     3029    keywords    = {C++, GNU C},
     3030    contributer = {pabuhr@plg},
     3031    author      = {Michael D. Tiemann},
     3032    title       = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     3033    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
     3034    month       = mar,
     3035    year        = 1990,
     3036}
     3037
     3038% H
     3039
     3040@article{Michael04a,
     3041    keywords    = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
     3042    author      = {Maged M. Michael},
     3043    title       = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
     3044    journal     = ieeepds,
     3045    volume      = 15,
     3046    number      = 6,
     3047    month       = jun,
     3048    year        = 2004,
     3049    pages       = {491-504},
     3050    publisher   = {IEEE Press},
     3051    address     = {Piscataway, NJ, USA},
     3052}
     3053
     3054@techreport{Hermes90,
     3055    keywords    = {processes, distributed computing},
     3056    contributer = {pabuhr@plg},
     3057    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
     3058    title       = {Hermes: A Language for Distributed Computing},
     3059    institution = {IBM T. J. Watson Research Center},
     3060    address     = {Yorktown Heights, New York, U.S.A., 10598},
     3061    month       = oct,
     3062    year        = 1990,
     3063}
     3064
     3065@book{Hermes91,
     3066    keywords    = {processes, distributed computing},
     3067    contributer = {pabuhr@plg},
     3068    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
     3069    title       = {Hermes: A Language for Distributed Computing},
     3070    publisher   = {Prentice Hall},
     3071    series      = {Innovative Technology},
     3072    year        = 1991,
     3073}
     3074
     3075@article{katzenelson83b,
     3076    contributer = {gjditchfield@plg},
     3077    author      = "Jacob Katzenelsen",
     3078    title       = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
     3079    journal     = spe,
     3080    year        = 1983,
     3081    volume      = 13,
     3082    number      = 7,
     3083    pages       = {577-596},
     3084    month       = jul
     3085}
     3086
     3087@techreport{Hoare73,
     3088    keywords    = {},
     3089    contributer = {gjditchfield@plg},
     3090    author      = {C. A. R. Hoare},
     3091    title       = {Hints on Programming Language Design},
     3092    institution = {Stanford University Computer Science Department},
     3093    year        = 1973,
     3094    month       = dec,
     3095    number      = {CS-73-403},
     3096    note        = {Reprinted in \cite{pldesign}.}
     3097}
     3098
     3099@article{Dijkstra71,
     3100    keywords    = {monitor, secretary},
     3101    contributer = {pabuhr@plg},
     3102    author      = {E. W. Dijkstra},
     3103    title       = {Hierarchical Ordering of Sequential Processes},
     3104    journal     = acta,
     3105    volume      = 1,
     3106    pages       = {115-138},
     3107    year        = 1971,
     3108}
     3109
     3110@article{Buhr15a,
     3111    keywords    = {software solution, mutual exclusion, performance experiment},
     3112    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
     3113    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
     3114    journal     = {Concurrency and Computation: Practice and Experience},
     3115    volume      = 27,
     3116    number      = 3,
     3117    pages       = {651-701},
     3118    month       = mar,
     3119    year        = 2015,
     3120}
     3121
     3122@article{Ackermann28,
     3123    keywords    = {recursion, Ackermann function},
     3124    contributer = {pabuhr@plg},
     3125    author      = {Wilhelm Ackermann},
     3126    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
     3127    publisher   = {Springer},
     3128    journal     = {Mathematische Annalen},
     3129    number      = 1,
     3130    volume      = 99,
     3131    pages       = {118-133},
     3132    month       = dec,
     3133    year        = 1928,
     3134}
     3135
     3136@inproceedings{typeclass,
     3137    keywords    = {Hindley/Miller type systems, Haskell},
     3138    contributer = {gjditchfield@plg},
     3139    author      = {Philip Wadler and Stephen Blott},
     3140    title       = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
     3141    booktitle   = popl,
     3142    year        = 1989,
     3143    pages       = {60-76},
     3144    organization= {Association for Computing Machinery}
     3145}
     3146
     3147% I
     3148
     3149@book{IBM370,
     3150    keywords    = {370, IBM},
     3151    contributer = {pabuhr@plg},
     3152    key         = {IBM370},
     3153    title       = {{IBM} System/370 Principles of Operation},
     3154    publisher   = {IBM},
     3155    number      = {GA22-7000-8},
     3156    month       = oct,
     3157    year        = 1981,
     3158    edition     = {9th}
     3159}
     3160
     3161@book{Icon,
     3162    keywords    = {Icon},
     3163    contributer = {pabuhr@plg},
     3164    author      = {Ralph E. Griswold and Madge T. Griswold},
     3165    title       = {The Icon Programming Language},
     3166    publisher   = {Prentice-Hall},
     3167    year        = 1983,
     3168}
     3169
     3170@inproceedings{Valois94,
     3171    keywords    = {lock free, queue},
     3172    contributer = {pabuhr@plg},
     3173    author      = {John D. Valois},
     3174    title       = {Implementing Lock-Free Queues},
     3175    booktitle   = {Seventh International Conference on Parallel and Distributed Computing Systems},
     3176    address     = {Las Vegas, Nevada, U.S.A.},
     3177    year        = {1994},
     3178    pages       = {64-69},
     3179}
     3180
     3181@article{Hehner81,
     3182    keywords    = {concurrency, critical section, bakery algorithm},
     3183    contributer = {pabuhr@plg},
     3184    author      = {Eric C. R. Hehner and R. K. Shyamasundar},
     3185    title       = {An Implementation of {P} and {V}},
     3186    journal     = ipl,
     3187    year        = 1981,
     3188    month       = aug,
     3189    volume      = 12,
     3190    number      = 4,
     3191    pages       = {196-198},
     3192}
     3193
     3194@incollection{Steenkiste91,
     3195    keywords    = {lisp},
     3196    contributer = {gjditchfield@plg},
     3197    author      = {Peter A. Steenkiste},
     3198    title       = {The Implementation of Tags and Run-Time Checking},
     3199    booktitle   = {Topics in Advanced Language Implementation},
     3200    pages       = {3-24},
     3201    year        = 1991,
     3202    editor      = {Peter Lee},
     3203    chapter     = {1},
     3204    publisher   = {The MIT Press}
     3205}
     3206
     3207@techreport{Roberts89,
     3208    keywords    = {},
     3209    contributer = {pabuhr@plg},
     3210    author      = {Eric S. Roberts},
     3211    title       = {Implementing Exceptions in {C}},
     3212    institution = {Digital Systems Research Center},
     3213    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
     3214    number      = {40},
     3215    month       = mar,
     3216    year        = 1989,
     3217}
     3218
     3219@mastersthesis{Bilson03,
     3220    keywords    = {Cforall, parametric polymorphism, overloading},
     3221    contributer = {pabuhr@plg},
     3222    author      = {Richard C. Bilson},
     3223    title       = {Implementing Overloading and Polymorphism in Cforall},
     3224    school      = {School of Computer Science, University of Waterloo},
     3225    year        = 2003,
     3226    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     3227    note        = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
     3228}
     3229
     3230@article{Buhr05b,
     3231    keywords    = {monitor, automatic signal, implicit signal},
     3232    contributer = {pabuhr@plg},
     3233    author      = {Peter A. Buhr and Ashif S. Harji},
     3234    title       = {Implicit-signal monitors},
     3235    journal     = toplas,
     3236    volume      = 27,
     3237    number      = 6,
     3238    month       = nov,
     3239    year        = 2005,
     3240    issn        = {0164-0925},
     3241    pages       = {1270--1343},
     3242    doi         = {http://doi.acm.org/10.1145/1108970.1108975},
     3243    publisher   = {ACM Press},
     3244    address     = {New York, NY, USA},
     3245}
     3246
     3247@article{Baker77,
     3248    author      = {Henry C. Baker, Jr. and Carl Hewitt},
     3249    title       = {The Incremental Garbage Collection of Processes},
     3250    journal     = {SIGART Bulletin},
     3251    publisher   = {ACM},
     3252    address     = {New York, NY, USA},
     3253    month       = aug,
     3254    year        = 1977,
     3255    pages       = {55-59},
     3256    issn        = {0163-5719},
     3257    doi         = {http://doi.acm.org/10.1145/872736.806932},
     3258 }
     3259
     3260@book{Algol68,
     3261    keywords    = {Algol68},
     3262    contributer = {pabuhr@plg},
     3263    author      = {C. H. Lindsey and S. G. van der Meulen},
     3264    title       = {Informal Introduction to ALGOL 68},
     3265    publisher   = {North-Holland},
     3266    address     = {London},
     3267    year        = 1977,
     3268}
     3269
     3270@inproceedings{Cook90,
     3271    keywords    = {f-bounded polymorhpism, lambda calculus},
     3272    contributer = {gjditchfield@plg},
     3273    author      = {William R. Cook and Walter L. Hill and Peter S. Canning},
     3274    title       = {Inheritance is Not Subtyping},
     3275    booktitle   = popl,
     3276    year        = 1990,
     3277    pages       = {125-135},
     3278    organization= {Association for Computing Machinery},
     3279    abstract    = {
     3280        In typed object-oriented languages the subtype relation is
     3281        typically based on the inheritance hierarchy.  This approach,
     3282        however, leads either to insecure type-systems or to restrictions
     3283        on inheritance that make it less flexible than untyped Smalltalk
     3284        inheritance.  We present a new typed model of inheritance that
     3285        allows more of the flexibility of Smalltalk inheritance within a
     3286        statically-typed system.  Significant features of our analysis are
     3287        the introduction of polymorphism into the typing of inheritance and
     3288        the uniform application of inheritance to objects, classes and
     3289        types.  The resulting notion of {\em type inheritance} allows us to
     3290        show that the type of an inherited object is an inherited type but
     3291        not always a subtype.
     3292    }
     3293}
     3294
     3295@inproceedings{MMR92,
     3296    keywords    = {},
     3297    contributer = {gjditchfield@plg},
     3298    author      = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
     3299    title       = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
     3300                  into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
     3301    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
     3302    year        = 1992,
     3303    month       = aug,
     3304    pages       = {295-312},
     3305    organization= {USENIX Association},
     3306    address     = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
     3307    abstract    = {
     3308        This paper reports our experiences integrating the Sun Microsystems
     3309        RPC and XDR protocol specifications into the C++ model of
     3310        input/output streams.  As part of the {\it Renaissance} operating
     3311        system project, we wish to construct network servers and clients,
     3312        written in C++, which interoperate with existing UNIX clients
     3313        and servers.  We discovered that, although it would be possible to
     3314        re-implement the procedural based XDR/RPC implementation
     3315        distributed by Sun Microsystems in C++, it is far cleaner to
     3316        integrate the protocols with the C++ I/O stream model.  We
     3317        feel the resulting model provides a cleaner way of implementing RPC
     3318        clients and servers without losing functionality or compatibility
     3319        with existing clients and servers.
     3320    }
     3321}
     3322
     3323@inproceedings{Zuo08,
     3324    keywords    = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
     3325    author      = {Wang Zuo and Wang Zuo and Li Jiaxing},
     3326    title       = {An Intelligent Multi-Port Memory},
     3327    booktitle   = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
     3328    month       = dec,
     3329    year        = 2008,
     3330    pages       = {251-254},
     3331    publisher   = {IEEE Computer Society},
     3332    address     = {Los Alamitos, CA, USA},
     3333}
     3334
     3335@book{Francez96,
     3336    keywords    = {await, formal},
     3337    contributer = {pabuhr@plg},
     3338    author      = {Nissim Francez and Ira R. Forman},
     3339    title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
     3340    publisher   = {Addison-Wesley},
     3341    series      = {ACM Press Books},
     3342    year        = 1996,
     3343}
     3344
     3345@article{Labreche90,
     3346    keywords    = {concurrency, C++},
     3347    contributer = {pabuhr@plg},
     3348    author      = {Pierre Labr{\`{e}}che},
     3349    title       = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     3350    journal     = sigplan,
     3351    volume      = 25,
     3352    number      = 4,
     3353    month       = apr,
     3354    year        = 1990,
     3355    pages       = {20-32},
     3356}
     3357
     3358@inproceedings{interfaces,
     3359    keywords    = {parameterized interfaces, classes, recursion/inheritance},
     3360    contributer = {gjditchfield@plg},
     3361    author      = {Peter S. Canning and William R. Cook and Walter L. Hill and
     3362        Walter G. Olthoff},
     3363    title       = {Interfaces for Strongly-Typed Object-Oriented Programming},
     3364    crossref    = "OOPSLA89",
     3365    pages       = {457-467},
     3366    abstract    = {
     3367        This paper develops a system of explicit interfaces for
     3368        object-oriented programming.  The system provides the benefits of
     3369        module interfaces found in languages like Ada and Modula-2 while
     3370        preserving the expressiveness that gives untyped object-oriented
     3371        languages like Smalltalk their flexibility.  Interfaces are
     3372        interpreted as polymorphic types to make the system sufficiently
     3373        powerful.  We use interfaces to analyze the properties of
     3374        inheritance, and identify three distinct kinds of inheritance in
     3375        object-oriented programming, corresponding to objects, classes, and
     3376        interfaces, respectively.  Object interfaces clarify the
     3377        distinction between interface containment and inheritance and give
     3378        insight into limitations caused by equating the notions of type and
     3379        class in many typed object-oriented programming languages.
     3380        Interfaces also have practical consequences for design,
     3381        specification, and maintenance of object-oriented systems.
     3382    }
     3383}
     3384
     3385@phdthesis{Girard72,
     3386    keywords    = {universal quantification},
     3387    contributer = {gjditchfield@plg},
     3388    author      = {J.-Y. Girard},
     3389    title       = {Interpretation fonctionelle et elimination des coupures de
     3390        l'arithmetique d'ordre superieur},
     3391    school      = {Universite Paris},
     3392    year        = {1972}
     3393}
     3394
     3395@article{Karaorman93,
     3396    keywords    = {Eiffel, concurrency libraries},
     3397    contributer = {pabuhr@plg},
     3398    author      = {Murat Karaorman and John Bruno},
     3399    title       = {Introducing Concurrency to a Sequential Language},
     3400    journal     = cacm,
     3401    month       = sep,
     3402    year        = 1993,
     3403    volume      = 36,
     3404    number      = 9,
     3405    pages       = {103-116}
     3406}
     3407
     3408@book{Corman92,
     3409    keywords    = {PRAM, parallel algorithms},
     3410    contributer = {pabuhr@plg},
     3411    author      = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
     3412    title       = {Introduction to Algorithms},
     3413    publisher   = {MIT Press/McGraw-Hill},
     3414    series      = {Electrical Engineering and Computer Science Series},
     3415    year        = 1992,
     3416}
     3417
     3418@book{Hopcroft79,
     3419    keywords    = {finite-state machine, push-dowm automata},
     3420    contributer = {pabuhr@plg},
     3421    author      = {John E. Hopcroft and Jeffrey D. Ullman},
     3422    title       = {Introduction to Automata Theory, Languages and Computation},
     3423    publisher   = {Addison-Wesley},
     3424    year        = 1979,
     3425}
     3426
     3427@techreport{walker87,
     3428    keywords    = {CCS},
     3429    contributer = {gjditchfield@plg},
     3430    author      = {David Walker},
     3431    title       = {Introduction to a Calculus of Communicating Systems},
     3432    institution = {Laboratory for Foundations of Computer Science},
     3433    year        = 1987,
     3434    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
     3435    month       = jun,
     3436    number      = {ECS-LFCS-87-22},
     3437}
     3438
     3439@article{katzenelson83a,
     3440    author      = {Jacob Katzenelson},
     3441    title       = {Introduction to Enhanced C (EC)},
     3442    journal     = spe,
     3443    volume      = 13,
     3444    number      = 7,
     3445    year        = 1983,
     3446    month       = jul,
     3447    pages       = {551-576},
     3448}
     3449
     3450@book{Deitel90,
     3451    keywords    = {concurrency, operating systems},
     3452    contributer = {pabuhr@plg},
     3453    author      = {Harvey M. Deitel},
     3454    title       = {An Introduction to Operating Systems},
     3455    publisher   = {Addison-Wesley},
     3456    year        = 1990,
     3457    edition     = {second},
     3458}
     3459
     3460@techreport{Birrell89,
     3461    keywords    = {threads, monitors},
     3462    contributer = {pabuhr@plg},
     3463    author      = {Andrew D. Birrell},
     3464    title       = {An Introduction to Programming with Threads},
     3465    institution = {Digital Systems Research Center},
     3466    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
     3467    number      = {35},
     3468    month       = jan,
     3469    year        = 1989,
     3470    note        = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
     3471
     3472}
     3473
     3474@article{t/o,
     3475    keywords    = {Trellis/Owl},
     3476    contributer = {gjditchfield@plg},
     3477    author      = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
     3478    title       = {An Introduction to Trellis/Owl},
     3479    journal     = sigplan,
     3480    volume      = 21,
     3481    number      = 11,
     3482    year        = 1986,
     3483    month       = nov,
     3484    pages       = {9-16},
     3485}
     3486
     3487@inproceedings{Hibbard77,
     3488    keywords    = {algol-68, concurrency},
     3489    contributer = {pabuhr@plg},
     3490    author      = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
     3491    title       = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
     3492    booktitle   = {Proceedings of the 5th Annual iii Conference},
     3493    address     = {Guidel, France},
     3494    month       = may,
     3495    year        = 1977,
     3496    pages       = {203-221}
     3497}
     3498
     3499@inproceedings{Miller97,
     3500    keywords    = {exception handling, software-engineering},
     3501    contributer = {pabuhr@plg},
     3502    author      = {Robert Miller and Anand Tripathi},
     3503    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
     3504    booktitle   = {ECOOP'97},
     3505    publisher   = {Springer-Verlag},
     3506    volume      = 1241,
     3507    series      = {Lecture Notes in Computer Science},
     3508    year        = 1997,
     3509    pages       = {85-103}
     3510}
     3511   
     3512@article{Murer96,
     3513    keywords    = {interators, generators, cursors},
     3514    contributer = {pabuhr@plg},
     3515    author      = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
     3516    title       = {Iteration Abstraction in Sather},
     3517    journal     = toplas,
     3518    month       = jan,
     3519    year        = 1996,
     3520    volume      = 18,
     3521    number      = 1,
     3522    pages       = {1-15},
     3523}
     3524
     3525% J
     3526                 
     3527@book{Java,
     3528    keywords    = {Java},
     3529    contributer = {pabuhr@plg},
     3530    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
     3531    title       = {The {Java} Language Specification},
     3532    publisher   = {Addison-Wesley},
     3533    year        = 2000,
     3534    edition     = {second},
     3535}
     3536
     3537@manual{Java8,
     3538    keywords    = {Java SE 8},
     3539    contributer = {pabuhr@plg},
     3540    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
     3541    title       = {The {Java} Language Specification},
     3542    publisher   = {Oracle},
     3543    year        = 2015,
     3544    edition     = {Java SE 8},
     3545}
     3546
     3547@manual{JUC,
     3548    keywords    = {Java concurrency library},
     3549    contributer = {pabuhr@plg},
     3550    title       = {java.util.concurrency},
     3551    author      = {Doug Lea},
     3552    organization= {Oracle},
     3553    year        = 2014,
     3554    note        = {\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{\textsf{http://docs.oracle.com/\-javase/7/\-docs/\-api/\-java/\-util/\-concurrent/\-package-summary.html}}},
     3555}
     3556
     3557% K
     3558
     3559@article{Duggan96,
     3560    keywords    = {concurrency, critical section},
     3561    contributer = {pabuhr@plg},
     3562    author      = {Dominic Duggan and Gordon V. Cormack and John Ophel},
     3563    title       = {Kinded Type Inference for Parametric Overloading},
     3564    journal     = acta,
     3565    volume      = 33,
     3566    number      = 1,
     3567    year        = 1996,
     3568    pages       = {21-68},
     3569}
     3570
     3571@article{Peter35,
     3572    keywords    = {recursion, Ackermann function},
     3573    contributer = {pabuhr@plg},
     3574    author      = {R{\'{o}}zsa P{\'{e}}ter},
     3575    title       = {Konstruktion nichtrekursiver Funktionen},
     3576    publisher   = {Springer},
     3577    journal     = {Mathematische Annalen},
     3578    number      = 111,
     3579    volume      = 1,
     3580    pages       = {42-60},
     3581    month       = dec,
     3582    year        = 1935,
     3583}
     3584
     3585% L
     3586
     3587@TechReport{WVWR88:L,
     3588    contributer = {gjditchf@plg},
     3589    author      = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
     3590    title       = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
     3591    institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
     3592    year        = 1988,
     3593    number      = {88-3},
     3594    address     = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
     3595                   en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
     3596                   ED Nijmegen, The Netherlands},
     3597    month       = apr,
     3598    annote      = {A polymorphic typed lambda calculus with \begin{itemize}
     3599                   \item A trivial type, ``!'', with a single element.
     3600                   \item Labelled types, distinct from each other.
     3601                   ``!False'' and ``!True'' are distinct types, each
     3602                   containing a single value serving as boolean false and
     3603                   true.  ``2'' is an abbreviation for ``!0 succ succ'', the
     3604                   type containing only 2.
     3605                   \item Disjunction types ``\{| !False, !True |\}''.  Interval
     3606                   types are abbreviations for disjunctions.
     3607                   \item Conjunction types ``\{\& real Re, real Im \&\}'', where
     3608                   ``Re'' and ``Im'' are type labels that distinguish between the
     3609                   fields.
     3610                   \item Pair types ``\{^ a, b ^\}'', for use in recursive types
     3611                   and dyadic infix functions.
     3612                   \item Function types, universal types, existential types,
     3613                   and subtyping (viewed as coercion), as in Fun.
     3614                   \end{itemize}
     3615                   Disjunctions and conjunctions types are associative and
     3616                   commutative (i.e. flat).  Each type has a matching
     3617                   constructor.  Functions use pattern matching on type
     3618                   labels to strip labels and extract conjunction fields:
     3619                   \begin{verbatim}
     3620                   \lambda n {0...1000000 Guilders}. ... n ...
     3621                   -- both argument and n are amounts in Guilders.
     3622                   \lambda n {0...1000000} Guilders. ... n ...
     3623                   -- argument in Guilders, but n is in 0...1000000.
     3624                   \end{verbatim}
     3625                   ``Function bundles'' (conjunctions of functions), applied
     3626                   to arguments, replace Dijkstra's guarded if...fi, but the
     3627                   bundles are first-class and the guards are part of their
     3628                   type.
     3629
     3630                   The same trick used to define the type ``2'' is used to
     3631                   move absolute times into the type system, to allow static
     3632                   checking. ``0`'' denotes a time before the system begins
     3633                   execution.  ``\#`'' denotes ``eventually'', and ``?`''
     3634                   denotes ``maybe never''.  ``a\\t'' and ``a@t'' are types
     3635                   of a value of type a that will be available no later
     3636                   (earlier) than time t.  Universals and existentials use
     3637                   subtyping to parameterize functions by start time:
     3638                   \begin{verbatim}
     3639                   let f {\forall t > \#`}. {a\t} \on {b\t+d}
     3640                   f{then} y -- argument y must be available at time ``then''.
     3641                   \end{verbatim}
     3642                   Functions can return before their arguments are available
     3643                   if they don't use them.  However, function {\em bundles}
     3644                   can't return until their result type is known, so the
     3645                   lower and upper time bounds of the bundle are the
     3646                   second-last upper bound of the component functions: at
     3647                   that time, there is only one alternative left.
     3648
     3649                   Explicit time parameterization allows slack in time
     3650                   specification.  Tools could point out slack or determine
     3651                   degree of parallelism.}
     3652}
     3653
     3654@mastersthesis{Clarke90,
     3655    keywords    = {concurrency, postponing requests},
     3656    contributer = {pabuhr@plg},
     3657    author      = {Charles L. A. Clarke},
     3658    title       = {Language and Compiler Support for Synchronous Message Passing Architectures},
     3659    school      = {University of Waterloo},
     3660    year        = 1990,
     3661    address     = {Waterloo, Ontario, Canada, N2L 3G1}
     3662}
     3663
     3664@article{Tennent77,
     3665    keywords    = {abstraction, correspondence, Pascal},
     3666    contributer = {gjditchfield@plg},
     3667    author      = {R. D. Tennent},
     3668    title       = {Language Design Methods Based on Semantic Principles},
     3669    journal     = acta,
     3670    year        = 1977,
     3671    volume      = 8,
     3672    number      = 2,
     3673    pages       = {97-112},
     3674    note        = {reprinted in \cite{pldesign}},
     3675    abstract    = {
     3676        Two language design methods based on principles derived from the
     3677        denotational approach to programming language semantics are
     3678        described and illustrated by an application to the language Pascal.
     3679        The principles are, firstly, the correspondence between parametric
     3680        and declarative mechanisms and secondly, a principle of abstraction
     3681        for programming languages adapted from set theory.  Several useful
     3682        extensions and generalizations of Pascal emerge by applying these
     3683        principles, including a solution to the array parameter problem,
     3684        and a modularization facility.
     3685    },
     3686}
     3687
     3688@article{Liskov86,
     3689    keywords    = {synchronous communication, concurrency},
     3690    contributer = {pabuhr@plg},
     3691    author      = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
     3692    title       = {Limitations of Synchronous Communication with Static
     3693                   Process Structure in Languages for Distributed Computing},
     3694    journal     = {},
     3695    volume      = {},
     3696    number      = {},
     3697    month       = {},
     3698    year        = {},
     3699    pages       = {},
     3700}
     3701
     3702@article{Linda,
     3703    keywords    = {Linda, concurrency},
     3704    contributer = {pabuhr@plg},
     3705    author      = {Nicholas Carriero and David Gelernter},
     3706    title       = {Linda in Context},
     3707    journal     = cacm,
     3708    volume      = 32,
     3709    number      = 4,
     3710    month       = apr,
     3711    year        = 1989,
     3712    pages       = {444-458}
     3713}
     3714
     3715@book{Weissman67,
     3716    keywords    = {lisp},
     3717    author      = {Clark Weissman},
     3718    title       = {Lisp 1.5 Primer},
     3719    publisher   = {Dickenson Publishing},
     3720    year        = 1967,
     3721}
     3722
     3723@article{Sundell08,
     3724    keywords    = {lock free, deque},
     3725    contributer = {pabuhr@plg},
     3726    author      = {H{\r{a}}kan Sundell and Philippas Tsigas},
     3727    title       = {Lock-free Deques and Doubly Linked Lists},
     3728    journal     = {J. Parallel Distrib. Comput.},
     3729    volume      = 68,
     3730    number      = 7,
     3731    year        = 2008,
     3732    pages       = {1008-1020},
     3733}
     3734
     3735@article{Cormack89,
     3736    keywords    = {parsing, LR, error recovery},
     3737    contributer = {pabuhr@plg},
     3738    author      = {Gordon V. Cormack},
     3739    title       = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
     3740    journal     = sigplan,
     3741    volume      = 24,
     3742    number      = 7,
     3743    month       = jul,
     3744    year        = 1989,
     3745    pages       = {161-169},
     3746    note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
     3747}
     3748
     3749% M
     3750
     3751@book{M68K,
     3752    keywords    = {M680XX, Motorola},
     3753    contributer = {pabuhr@plg},
     3754    key         = {Motorola},
     3755    title       = {M68000 Family Programmer's Reference Manual},
     3756    publisher   = {Motorola},
     3757    year        = 1992,
     3758}
     3759
     3760@article{c++libs,
     3761    keywords    = {directory structure},
     3762    contributer = {gjditchfield@plg},
     3763    author      = {J. M. Coggins and G. Bollella},
     3764    title       = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
     3765    journal     = sigplan,
     3766    year        = 1989,
     3767    month       = jun, volume = 24, number = 6, pages = {37-48},
     3768    abstract    = {
     3769        This paper describes a scheme we have used to manage a large
     3770        library written in the C++ language.  The scheme imposes a
     3771        directory structure, and represents dependency hierarchy in a
     3772        globally accessible file we call the 'prelude' file.  We also
     3773        discuss the structure of the description files (makefiles) used
     3774        with the UNIX options we have found to be useful in reducing the
     3775        size of the library, and how to minimize recompilation time after
     3776        trivial changes to the source code of the library.
     3777    }
     3778}
     3779
     3780@inproceedings{mprof,
     3781    keywords    = {malloc},
     3782    contributer = {gjditchfield@plg},
     3783    author      = {Benjamin Zorn and Paul Hilfinger},
     3784    title       = {A Memory Allocation Profiler for {C} and Lisp Programs},
     3785    booktitle   = {Summer 1988 {USENIX} proceedings},
     3786    year        = 1988
     3787}
     3788
     3789@manual{MMTk,
     3790    keywords    = {Java memory management},
     3791    contributer = {pabuhr@plg},
     3792    title       = {MMTk: The Memory Management Toolkit},
     3793    author      = {Steve Blackburn and Robin Garner and Daniel Frampton},
     3794    month       = sep,
     3795    year        = 2006,
     3796    note        = {\textsf{http://cs.anu.edu.au/\-\char`\~Robin.Garner/\-mmtk-guide.pdf}},
     3797}
     3798
     3799@article{Adve10,
     3800    keywords    = {Java memory management},
     3801    contributer = {pabuhr@plg},
     3802    author      = {Sarita V. Adve and Hans-J. Boehm},
     3803    title       = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
     3804    journal     = cacm,
     3805    volume      = 53,
     3806    number      = 8,
     3807    month       = aug,
     3808    year        = 2010,
     3809    pages       = {90-101},
     3810    publisher   = {ACM},
     3811    address     = {New York, NY, USA},
     3812}
     3813@techreport{Mesa,
     3814    keywords    = {monitors, packages},
     3815    contributer = {pabuhr@plg},
     3816    author      = {James G. Mitchell and William Maybury and Richard Sweet},
     3817    title       = {Mesa Language Manual},
     3818    institution = {Xerox Palo Alto Research Center},
     3819    number      = {CSL--79--3},
     3820    month       = apr,
     3821    year        = 1979
     3822}
     3823
     3824@article{Andrews89,
     3825    keywords    = {semaphore, split-binary, baton},
     3826    contributer = {pabuhr@plg},
     3827    author      = {Gregory R. Andrews},
     3828    title       = {A Method for Solving Synronization Problems},
     3829    journal     = scp,
     3830    volume      = 13,
     3831    number      = 4,
     3832    month       = dec,
     3833    year        = 1989,
     3834    pages       = {1-21},
     3835}
     3836
     3837@inproceedings{Mitchell78,
     3838    keywords    = {Mesa},
     3839    contributer = {pabuhr@plg},
     3840    author      = {James G. Mitchell},
     3841    title       = {Mesa: A Designer's User Perspective},
     3842    booktitle   = {Spring CompCom 78},
     3843    organization= {Sixteenth IEEE Computer Society International Conference},
     3844    address     = {San Francisco, California, U.S.A.},
     3845    month       = feb,
     3846    year        = 1978,
     3847    pages       = {36-39},
     3848    note        = {IEEE Catalog No. 78CH1328-4C},
     3849}
     3850
     3851@article{Gentleman81,
     3852    keywords    = {messages, concurrency},
     3853    contributer = {pabuhr@plg},
     3854    author      = {W. Morven Gentleman},
     3855    title       = {Message Passing between Sequential Processes:
     3856                   the Reply Primitive and the Administrator Concept},
     3857    journal     = spe,
     3858    month       = may,
     3859    year        = 1981,
     3860    volume      = 11,
     3861    number      = 5,
     3862    pages       = {435-466}
     3863}
     3864
     3865@article{Cormack88,
     3866    keywords    = {concurrency},
     3867    contributer = {pabuhr@plg},
     3868    author      = {G. V. Cormack},
     3869    title       = {A Micro Kernel for Concurrency in C},
     3870    journal     = spe,
     3871    month       = may,
     3872    year        = 1988,
     3873    volume      = 18,
     3874    number      = 4,
     3875    pages       = {485-491}
     3876}
     3877
     3878@article{Buhr90a,
     3879    keywords    = {concurrency, light-weight process, shared memory},
     3880    contributer = {pabuhr@plg},
     3881    author      = {Peter A. Buhr and Richard A. Stroobosscher},
     3882    title       = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
     3883    journal     = spe,
     3884    volume      = 20,
     3885    number      = 9,
     3886    month       = sep,
     3887    year        = 1990,
     3888    pages       = {929-963},
     3889}
     3890
     3891@techreport{uSystem,
     3892    keywords    = {C, concurrency, light-weight process, shared memory},
     3893    contributer = {pabuhr@plg},
     3894    author      = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
     3895    title       = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
     3896    institution = {Department of Computer Science, University of Waterloo},
     3897    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     3898    month       = sep,
     3899    year        = 1994,
     3900    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-uSystem/\-uSystem.ps.gz}}},
     3901}
     3902
     3903@book{Mips4000,
     3904    key         = {Mips4000},
     3905    title       = {MIPS R4000 Microprocessor User's Manual},
     3906    publisher   = {MIPS Computer Systems Inc},
     3907    year        = 1991,
     3908}
     3909
     3910@inproceedings{Mjolner,
     3911    keywords    = {Mjolner, hierarchical windows},
     3912    contributer = {pabuhr@plg},
     3913    author      = {G\"{o}rel Hedin and Boris Magnusson},
     3914    title       = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
     3915    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
     3916    organization= {ECOOP'88},
     3917    publisher   = {Springer-Verlag},
     3918    volume      = 322,
     3919    editor      = {S. Gjessing and K. Nygaard},
     3920    address     = {Oslo, Norway},
     3921    month       = aug,
     3922    year        = 1988,
     3923    pages       = {41-54},
     3924    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
     3925}
     3926
     3927@article{Skillicorn98,
     3928    keywords    = {parallel models},
     3929    contributer = {pabuhr@plg},
     3930    author      = {David B. Skillicorn and Domenico Talia},
     3931    title       = {Models and Languages for Parallel Computation},
     3932    journal     = acmcs,
     3933    volume      = 30,
     3934    number      = 2,
     3935    month       = jun,
     3936    year        = 1998,
     3937    pages       = {123-169},
     3938}
     3939
     3940@article{Werther96,
     3941    keywords    = {C++, language syntax},
     3942    contributer = {pabuhr@plg},
     3943    author      = {Ben Werther and Damian Conway},
     3944    title       = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
     3945    journal     = sigplan,
     3946    volume      = 31,
     3947    number      = 11,
     3948    month       = nov,
     3949    year        = 1996,
     3950    pages       = {74-82},
     3951}
     3952
     3953@book{Alexandrescu01,
     3954    keywords    = {c design-patterns programming},
     3955    contributer = {pabuhr@plg},
     3956    author      = {Andrei Alexandrescu},
     3957    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
     3958    publisher   = {Addison-Wesley Professional},
     3959    month       = feb,
     3960    year        = 2001,
     3961    isbn        = {0201704315},
     3962}
     3963
     3964@book{Tanenbaum92,
     3965    keywords    = {concurrency, operating systems},
     3966    contributer = {pabuhr@plg},
     3967    author      = {Andrew S. Tanenbaum},
     3968    title       = {Modern Operating Systems},
     3969    publisher   = {Prentice-Hall},
     3970    year        = 1992,
     3971}
     3972
     3973@article{Wirth77,
     3974    keywords    = {modules, coroutines},
     3975    contributer = {pabuhr},
     3976    author      = {Niklaus Wirth},
     3977    title       = {Modula: a Language for Modular Multiprogramming},
     3978    journal     = spe,
     3979    month       = {January--February},
     3980    year        = 1977,
     3981    volume      = 7,
     3982    number      = 1,
     3983    pages       = {3-35},
     3984}
     3985
     3986@book{Harbison92,
     3987    contributer = {mhcoffin},
     3988    author      = {Samuel P. Harbison},
     3989    title       = {Modula-3},
     3990    publisher   = {Prentise Hall, Inc.},
     3991    year        = {1992},
     3992    comment     = {This is a textbook for learning Modula-3.}
     3993}
     3994
     3995@techreport{Modula-3:old,
     3996    keywords    = {Modula-3, inheritance, type extension},
     3997    contributer = {gjditchfield@plg},
     3998    author      = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
     3999                   Jordan and Bill Kalsow and Greg Nelson},
     4000    title       = {Modula-3 Report},
     4001    institution = {Systems Research Center},
     4002    address     = {130 Lytton Avenue, Palo Alto, California  94301},
     4003    month       = aug,
     4004    year        = 1988,
     4005    number      = 31
     4006}
     4007 
     4008@article{Dueck90,
     4009    keywords    = {attribute grammars},
     4010    contributer = {pabuhr@plg},
     4011    author      = {Gerald D. P. Dueck and Gordon V. Cormack},
     4012    title       = {Modular Attribute Grammars},
     4013    journal     = {The Computer Journal},
     4014    month       = apr,
     4015    year        = 1990,
     4016    volume      = 33,
     4017    number      = 2,
     4018    pages       = {164-172},
     4019}
     4020
     4021@article{Yemini85,
     4022    keywords    = {exception handling},
     4023    contributer = {pabuhr@plg},
     4024    author      = {Shaula Yemini and Daniel M. Berry},
     4025    title       = {A Modular Verifiable Exception-Handling Mechanism},
     4026    journal     = toplas,
     4027    month       = apr,
     4028    year        = 1985,
     4029    volume      = 7,
     4030    number      = 2,
     4031    pages       = {214-243},
     4032}
     4033
     4034@article{Buhr95b,
     4035    keywords    = {concurrency, monitors, classification},
     4036    contributer = {pabuhr@plg},
     4037    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
     4038    title       = {Monitor Classification},
     4039    journal     = acmcs,
     4040    volume      = 27,
     4041    number      = 1,
     4042    month       = mar,
     4043    year        = 1995,
     4044    pages       = {63-107},
     4045}
     4046
     4047@article{Hoare74,
     4048    keywords    = {monitor},
     4049    contributer = {pabuhr@plg},
     4050    author      = {C. A. R. Hoare},
     4051    title       = {Monitors: An Operating System Structuring Concept},
     4052    journal     = cacm,
     4053    volume      = 17,
     4054    number      = 10,
     4055    month       = oct,
     4056    year        = 1974,
     4057    pages       = {549-557},
     4058    annote      = {
     4059    }
     4060}
     4061
     4062@inbook{Buhr99a,
     4063    keywords    = {concurrency, monitors, classification},
     4064    contributer = {pabuhr@plg},
     4065    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
     4066    title       = {Encyclopedia of Computer Science and Technology},
     4067    chapter     = {Monitor Taxonomy},
     4068    publisher   = {Marcel Dekker, Inc},
     4069    volume      = {40, supplement 25},
     4070    year        = 1999,
     4071    pages       = {191-212},
     4072}
     4073%    editor     = {Allen Kent and James G. Williams},
     4074
     4075@manual{MPI,
     4076    keywords    = {MPI},
     4077    contributer = {pabuhr@plg},
     4078    title       = {MPI: A Message-Passing Interface Standard, Version 3.1},
     4079    organization= {Message Passing Interface Forum},
     4080    address     = {University of Tennessee, Knoxville, Tennessee},
     4081    month       = jun,
     4082    year        = 2015,
     4083    note        = {\href{http://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf}{\textsf{http://www.mpi-forum.org/\-docs/\-mpi-3.1/\-mpi31-report.pdf}}},
     4084}
     4085
     4086@article{multilisp,
     4087    keywords    = {futures, scheme},
     4088    contributer = {gjditchfield@plg},
     4089    author      = {Halstead, Jr.,Robert H.},
     4090    title       = {Multilisp: A Language for Concurrent Symbolic Programming},
     4091    journal     = toplas,
     4092    volume      = 7,
     4093    number      = 4,
     4094    pages       = {501-538},
     4095    month       = oct,
     4096    year        = 1985,
     4097    comment     = {
     4098        (future E) begins evaluating the expression E, and
     4099        returns a ``future'' representing the value.  When evaluation is
     4100        finished, the value of E replaces the future.  Operations that need
     4101        the future's value suspend until it is available.  Assignment and
     4102        parameter passing do not suspend.  Future introduces concurrency
     4103        between the calculation of a value and its use; reference to
     4104        futures is a synchronization mechanism.
     4105
     4106        (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
     4107        applies F to the arguments.  pcall can be built from future and a
     4108        ``touch'' operation.  pcall is included because it may not be easy
     4109        to determine that there are no critical sections between the future
     4110        expression and the code between the future call and the value's
     4111        first use.
     4112
     4113        (delay E) is like future, but E's process does not begin until its
     4114        value is needed.  It provides lazy evaluation.  Replacing delay
     4115        with future would launch an infinite number of processes.
     4116    }
     4117}
     4118
     4119@techreport{Bretthauer89,
     4120    keywords    = {multiple inheritance},
     4121    contributer = {pabuhr@plg},
     4122    author      = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp},
     4123    title       = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
     4124    institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
     4125    address     = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
     4126    number      = {Arbeitspapiere der GMD 415},
     4127    month       = nov,
     4128    year        = 1989,
     4129}
     4130
     4131@inproceedings{c++:multinh,
     4132    keywords    = {C++, multiple inheritance, implementation},
     4133    contributer = {gjditchfield@plg},
     4134    author      = {Bjarne Stroustrup},
     4135    title       = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4136    booktitle   = {Proceedings of the Spring '87 EUUG Conference},
     4137    month       = may, year = 1987
     4138}
     4139
     4140@inproceedings{st:mult,
     4141    keywords    = {smalltalk, multiple inheritance, implementation},
     4142    contributer = {gjditchfield@plg},
     4143    author      = {Daniel H. H. Ingalls and A. H. Borning},
     4144    title       = {Multiple Inheritance in Smalltalk-80},
     4145    booktitle   = {Proceedings of the National Conference on Artificial Intelligence},
     4146    month       = aug,
     4147    year        = 1982,
     4148    pages       = {234-238},
     4149    organization= {American Association for Artificial Intelligence},
     4150    comment     = {
     4151        Methods are looked up in the current class, the superclasses, the
     4152        supersuperclasses, etc.  The same method can be inherited
     4153        repeatedly, but having different methods for the same message is an
     4154        error.  Only one copy is made for multiply-inherited fields.
     4155
     4156        {\tt X.m} is the method m in superclass X.  {\tt super.m} is
     4157        allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
     4158        super m}.  {\tt all.m} invokes all inherited versions of m.
     4159
     4160        Methods on the first-superclass chain are found as usual.  Methods
     4161        from other superclasses are copied into the class dictionary.  An
     4162        error method is created if inherited methods conflict.  The parser
     4163        is changed to allow compound selectors.  {\tt Object
     4164        messageNotUnderstood} is changed to look for compound selectors and
     4165        dynamically add a method with the right name and body to the class.
     4166        When methods are edited, they are copied into subclasses and
     4167        compound selector versions are deleted, as appropriate.
     4168    }
     4169}
     4170
     4171@article{Lamport86I,
     4172    keywords    = {software solutions, N-thread, mutual exclusions},
     4173    contributer = {pabuhr@plg},
     4174    author      = {Leslie Lamport},
     4175    title       = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
     4176    journal     = jacm,
     4177    volume      = 33,
     4178    number      = 2,
     4179    month       = apr,
     4180    year        = 1986,
     4181    pages       = {313--326},
     4182    numpages    = {14},
     4183    publisher   = {ACM},
     4184    address     = {New York, NY, USA},
     4185}
     4186
     4187@article{Lamport86II,
     4188    keywords    = {software solutions, N-thread, mutual exclusions},
     4189    contributer = {pabuhr@plg},
     4190    author      = {Leslie Lamport},
     4191    title       = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
     4192    journal     = jacm,
     4193    volume      = 33,
     4194    number      = 2,
     4195    month       = apr,
     4196    year        = 1986,
     4197    pages       = {327--348},
     4198    numpages    = {22},
     4199    publisher   = {ACM},
     4200    address     = {New York, NY, USA},
     4201}
     4202
     4203@article{Burns78,
     4204    keywords    = {hardware, N-process solution, O(N)},
     4205    contributer = {pabuhr@plg},
     4206    author      = {James E. Burns},
     4207    title       = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
     4208    journal     = {SIGACT News},
     4209    volume      = 10,
     4210    number      = 2,
     4211    month       = {Summer},
     4212    year        = 1978,
     4213    pages       = {42-47},
     4214}
     4215
     4216@inproceedings{Burns80,
     4217    keywords    = {N-process software solution},
     4218    contributer = {pabuhr@plg},
     4219    author      = {James E. Burns and Nancy A. Lynch},
     4220    title       = {Mutual Exclusion using Indivisible Reads and Writes},
     4221    booktitle   = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
     4222    year        = 1980,
     4223    pages       = {833-842},
     4224    note        = {\href{http://groups.csail.mit.edu/tds/papers/Lynch/allertonconf.pdf}{\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}} [Accessed on March 2014]},
     4225    optnote     = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
     4226}
     4227
     4228@article{Peterson81,
     4229    keywords    = {concurrency, critical section},
     4230    contributer = {pabuhr@plg},
     4231    author      = {G. L. Peterson},
     4232    title       = {Myths About the Mutual Exclusion Problem},
     4233    journal     = ipl,
     4234    year        = 1981,
     4235    month       = jun,
     4236    volume      = 12,
     4237    number      = 3,
     4238    pages       = {115-116},
     4239}
     4240
     4241% N
     4242
     4243@article{Haddon77,
     4244    keywords    = {monitors, nested monitor calls},
     4245    contributer = {pabuhr@plg},
     4246    author      = {Bruce K. Haddon},
     4247    title       = {Nested Monitor Calls},
     4248    journal     = osr,
     4249    volume      = 11,
     4250    number      = 4,
     4251    month       = oct,
     4252    year        = 1977,
     4253    pages       = {18-23},
     4254}
     4255
     4256@inproceedings{nesting,
     4257    keywords    = {},
     4258    contributer = {gjditchfield@plg},
     4259    author      = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
     4260    title       = {Nesting in {Ada} Programs is for the Birds},
     4261    booktitle   = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
     4262        Programming Language},
     4263    year        = 1980,
     4264    month       = dec, pages = {139-145},
     4265    note        = {SIGPLAN Notices, v. 15, n. 11},
     4266    abstract    = {
     4267        Given a data abstraction construct like the Ada package and in the
     4268        light of current thoughts on programming methodology, we feel that
     4269        nesting is an anachronism.  In this paper we propose a nest-free
     4270        program style for Ada that eschews nested program units and
     4271        declarations within blocks and instead heavily utilizes packages
     4272        and context specifications as mechanisms for controlling
     4273        visibility.  We view this proposal as a first step toward the
     4274        development of programming methods that exploit the novel language
     4275        features available in Ada.  Consideration of this proposal's
     4276        ramifications for data flow, control flow, and overall program
     4277        structure substantiates our contention that a tree structure is
     4278        seldom a natural representation of a program and that nesting
     4279        therefore generally interferes with program development and
     4280        readability.
     4281    }
     4282}
     4283
     4284@inproceedings{Buhr88,
     4285    keywords    = {nested classes, persistence},
     4286    contributer = {pabuhr@plg},
     4287    author      = {P. A. Buhr and C. R. Zarnke},
     4288    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
     4289    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
     4290    publisher   = {Springer-Verlag},
     4291    volume      = 322,
     4292    editor      = {S. Gjessing and K. Nygaard},
     4293    address     = {Oslo, Norway},
     4294    month       = aug,
     4295    year        = 1988,
     4296    pages       = {128-145},
     4297    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
     4298}
     4299
     4300@inproceedings{Thompson90new,
     4301    keywords    = {Plan 9},
     4302    contributer = {pabuhr@plg},
     4303    title       = {A New C Compiler},
     4304    author      = {Ken Thompson},
     4305    booktitle   = {Proceedings of the Summer 1990 UKUUG Conference},
     4306    year        = 1990,
     4307    pages       = {41--51},
     4308    url         = {http://doc.cat-v.org/bell_labs/new_c_compilers/new_c_compiler.pdf}
     4309}
     4310
     4311@article{Trono94,
     4312    author      = {John A. Trono},
     4313    title       = {A New Exercise in Concurrency},
     4314    journal     = {SIGCSE Bulletin},
     4315    volume      = {26},
     4316    number      = {3},
     4317    month       = sep,
     4318    year        = {1994},
     4319    pages       = {8-10},
     4320    publisher   = {ACM},
     4321    address     = {New York, NY, USA},
     4322}
     4323
     4324@article{Lamport74,
     4325    keywords    = {concurrency, N-Process solution, O(N)},
     4326    contributer = {pabuhr@plg},
     4327    author      = {Leslie Lamport},
     4328    title       = {A New Solution of Dijkstra's Concurrent Programming Problem},
     4329    journal     = cacm,
     4330    month       = aug,
     4331    year        = 1974,
     4332    volume      = 17,
     4333    number      = 8,
     4334    pages       = {453-455},
     4335}
     4336
     4337@article{landin,
     4338    keywords    = {},
     4339    contributer = {gjditchfield@plg},
     4340    author      = {P. J. Landin},
     4341    title       = {The Next 700 Programing Languages},
     4342    journal     = cacm,
     4343    year        = 1966,
     4344    volume      = 9,
     4345    pages       = {157-164},
     4346}
     4347
     4348@article{Herlihy05,
     4349    keywords    = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
     4350    contributer = {pabuhr@plg},
     4351    author      = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
     4352    title       = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
     4353    journal     = tocs,
     4354    volume      = 23,
     4355    number      = 2,
     4356    month       = may,
     4357    year        = 2005,
     4358    pages       = {146-196},
     4359    numpages    = {51},
     4360    publisher   = {ACM},
     4361    address     = {New York, NY, USA},
     4362}
     4363
     4364% O
     4365
     4366@inproceedings{oop:abcl/1,
     4367    keywords    = {concurrency, OOPL, futures},
     4368    contributer = {gjditchfield@plg},
     4369    author      = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
     4370    title       = {Object-Oriented Concurrent Programming in {ABCL/1}},
     4371    crossref    = "OOPSLA86",
     4372    pages       = {258-268},
     4373    comment     = {
     4374        Actions for messages sent to an object are executed concurrently
     4375        iff the object has no members.  A select construct specifies a set
     4376        of message patterns.
     4377
     4378        Express messages have priority.  If an express message arrives
     4379        while an ordinary message is being processed, the action for the
     4380        ordinary message is suspended or aborted and the action for the
     4381        express message is executed.  The sender decides which class a
     4382        message belongs in.  Non-interruptible sections can be defined.
     4383
     4384        Message sends can be non-blocking, or can block until a reply is
     4385        received, at the sender's option.  The receiver can continue to
     4386        execute after sending the reply.
     4387
     4388        Replies can send back ``futures'', and put values in them later.
     4389        Futures are queues of values, not single values.  The caller can
     4390        use a ``ready?'' predicate to test for empty queue, or can use
     4391        operations to get the first or all queue elements; these operations
     4392        block if the queue is empty.
     4393    }
     4394}
     4395
     4396@techreport{Schmidt95,
     4397    keywords    = {ACE, concurrency, library},
     4398    contributer = {pabuhr@plg},
     4399    author      = {Douglas C. Schmidt},
     4400    title       = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
     4401    institution = {Washington University in St. Louis},
     4402    year        = 1995,
     4403    number      = 31,
     4404    note        = {{\small\textsf{http://\-www.cs.wustl.edu/\-\char`\~schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
     4405}
     4406
     4407@inproceedings{OOEx,
     4408    keywords    = {Exceptions, object-oriented programming languages},
     4409    contributer = {gjditchfield@plg},
     4410    author      = {Christophe Dony},
     4411    title       = {An Object-oriented Exception Handling System for an Object-oriented Language},
     4412    booktitle   = {ECOOP '88. European Conference on Object-Oriented Programming},
     4413    year        = 1988,
     4414    pages       = {146-161},
     4415    editor      = {S. Gjessing and K. Nygaard},
     4416    organization= {DND, The Norwegian Computer Society},
     4417    publisher   = {Springer-Verlag},
     4418    comment     = {
     4419           Objectives:
     4420           - Users can define new exceptions.
     4421           - Default handlers can be attached to exceptions.
     4422           - Handlers can be attached to classes.
     4423           - Handlers can be attached to dynamic entities (expressions).
     4424           - Exceptions propagate first along the invocation chain.
     4425           - Exceptions should be hierarchically organized classes.
     4426           - Handlers should take into account the exception hierarchy (i.e.,
     4427             should handle raising of sub-exceptions).
     4428           The ``exceptional-event'' class has two subclasses.  ``Warning''
     4429           has a ``resume'' method, and ``error'' has ``exit'' and
     4430           ``retry'' methods.  Signalling an exception creates an instance
     4431           of the exception, whose members are used to pass information
     4432           back to the handler.  Handlers are instances of class
     4433           ``protect-handler'' with a method ``protect {\em expression}'',
     4434           or are methods defined for the class or the exception.
     4435    }
     4436}
     4437
     4438@article{CommonObjects,
     4439    author      = {A. Snyder},
     4440    title       = {Object-Oriented Programming for Common Lisp},
     4441    address     = {Palo Alto CA},
     4442    year        = 1985,
     4443    publisher   = {Software Technology Laboratory, Hewlett-Packard Laboratories},
     4444    journal     = {Report ATC-85-1},
     4445}
     4446
     4447@book{objective-c,
     4448    keywords    = {},
     4449    author      = {Brad J. Cox},
     4450    title       = {Object-oriented programming; an evolutionary approach},
     4451    publisher   = {Addison-Wesley},
     4452    year        = 1986
     4453}
     4454
     4455@book{Beta,
     4456    keywords    = {Beta, object oriented, concurrency, exceptions},
     4457    contributer = {pabuhr@plg},
     4458    author      = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
     4459    title       = {Object-oriented Programming in the {BETA} Programming Language},
     4460    publisher   = {Addison-Wesley},
     4461    year        = 1993,
     4462}
     4463
     4464@article{Flavors,
     4465    author      = {D. A. Moon},
     4466    title       = {Object-Oriented Programming with Flavors},
     4467    address     = {Portland OR},
     4468    month       = sep,
     4469    year        = 1986,
     4470    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
     4471}
     4472
     4473@article{Buhr00b,
     4474    keywords    = {concurrency, C++, real-time},
     4475    contributer = {pabuhr@plg},
     4476    author      = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
     4477    title       = {Object-Oriented Real-Time Concurrency},
     4478    journal     = sigplan,
     4479    volume      = 35,
     4480    number      = 10,
     4481    month       = oct,
     4482    year        = 2000,
     4483    pages       = {29-46},
     4484    note        = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
     4485}
     4486
     4487@book{Meyer88,
     4488    keywords    = {Eiffel},
     4489    contributer = {pabuhr@plg},
     4490    author      = {Bertrand Meyer},
     4491    title       = {Object-oriented Software Construction},
     4492    publisher   = {Prentice Hall},
     4493    year        = {1988},
     4494    series      = {Prentice Hall International Series in Computer Science},
     4495}
     4496
     4497@article{objectPascal,
     4498    keywords    = {objects, modules},
     4499    contributer = {gjditchfield@plg},
     4500    author      = {Larry Tesler},
     4501    title       = {Object Pascal Report},
     4502    journal     = {Structured Language World},
     4503    year        = 1985,
     4504    volume      = 9,
     4505    number      = 3,
     4506}
     4507
     4508@misc{obj-c:next,
     4509    keywords    = {categories, protocols, Objective C},
     4510    contributor = {gjditchfield@angus},
     4511    author      = {NeXT Computer, Inc.},
     4512    title       = {Objective C Extensions},
     4513    howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
     4514    year        = 1993
     4515}
     4516
     4517@book{Galletly96,
     4518    keywords    = {occam},
     4519    author      = {John Galletly},
     4520    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
     4521    publisher   = {{UCL} (University College London) Press Ltd.},
     4522    edition     = {second},
     4523    year        = 1996,
     4524}
     4525
     4526@techreport{Morrison88,
     4527    keywords    = {objects, concurrency, persistence},
     4528    contributer = {pabuhr@plg},
     4529    author      = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
     4530    title       = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
     4531    institution = {Department of Computational Science, University of St. Andrews, Scotland},
     4532    number      = {PPRR 57},
     4533    month       = jan,
     4534    year        = 1988,
     4535}
     4536
     4537@article{Peterson73,
     4538    keywords    = {goto, structured programming},
     4539    contributer = {pabuhr@plg},
     4540    author      = {W. W. Peterson and T. Kasami and N. Tokura},
     4541    title       = {On the Capabilities of While, Repeat, and Exit Statements},
     4542    journal     = cacm,
     4543    month       = aug,
     4544    year        = 1973,
     4545    volume      = 16,
     4546    number      = 8,
     4547    pages       = {503-512}
     4548}
     4549
     4550@article{Baker82,
     4551    keywords    = {compilation},
     4552    contributer = {gjditchfield@plg},
     4553    author      = {Theodore P. Baker},
     4554    title       = {A One-Pass Algorithm for Overload Resolution in {Ada}},
     4555    journal     = toplas,
     4556    year        = 1982,
     4557    month       = oct,
     4558    volume      = 4,
     4559    number      = 4,
     4560    pages       = {601-614},
     4561    abstract    = {
     4562        A simple method is presented for detecting ambiguities and finding
     4563        the correct interpretations of expressions in the programming
     4564        language Ada.  Unlike previously reported solutions to this
     4565        problem, which require multiple passes over a tree structure, the
     4566        method described here operates in one bottom-up pass, during which
     4567        a directed acyclic graph is produced.  The correctness of this
     4568        approach is demonstrated by a brief formal argument.
     4569    },
     4570    comment     = {
     4571        See also \cite{D:overload}.
     4572        }
     4573}
     4574
     4575@techreport{OpenMP,
     4576    keywords    = {concurrency, openmp, spmd},
     4577    contributer = {pabuhr@plg},
     4578    author      = {OpenMP Architecture Review Board},
     4579    title       = {OpenMP Application Program Interface, Version 4.0},
     4580    month       = jul,
     4581    year        = 2013,
     4582    note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}}},
     4583}
     4584
     4585@book{Deitel04,
     4586    keywords    = {concurrency, operating systems},
     4587    contributer = {pabuhr@plg},
     4588    author      = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
     4589    title       = {Operating Systems},
     4590    publisher   = {Pearson Prentice-Hall},
     4591    year        = 2004,
     4592    edition     = {third},
     4593}
     4594
     4595@book{Stalling98,
     4596    keywords    = {concurrency, operating systems},
     4597    contributer = {pabuhr@plg},
     4598    author      = {William Stallings},
     4599    title       = {Operating Systems: Internals and Design Principles},
     4600    publisher   = {Prentice-Hall},
     4601    year        = 1998,
     4602    edition     = {third},
     4603}
     4604
     4605@book{Stalling01,
     4606    keywords    = {concurrency, operating systems},
     4607    contributer = {pabuhr@plg},
     4608    author      = {William Stallings},
     4609    title       = {Operating Systems: Internals and Design Principles},
     4610    publisher   = {Prentice-Hall},
     4611    year        = 2001,
     4612    edition     = {fourth},
     4613}
     4614
     4615@book{Silberschatz91,
     4616    keywords    = {concurrency, operating systems},
     4617    contributer = {pabuhr@plg},
     4618    author      = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
     4619    title       = {Operating System Concepts},
     4620    publisher   = {Addision-Wesley},
     4621    year        = 1991,
     4622    edition     = {third},
     4623}
     4624
     4625@book{Tanenbaum87,
     4626    keywords    = {concurrency, operating systems},
     4627    contributer = {pabuhr@plg},
     4628    author      = {Andrew S. Tanenbaum},
     4629    title       = {Operating Systems : Design and Implementation},
     4630    publisher   = {Prentice-Hall},
     4631    series      = {Software Series},
     4632    year        = 1987,
     4633}
     4634
     4635@book{Hansen73,
     4636    keywords    = {monitors},
     4637    contributer = {pabuhr@plg},
     4638    author      = {Per {Brinch Hansen}},
     4639    title       = {Operating System Principles},
     4640    publisher   = {Prentice-Hall},
     4641    year        = 1973,
     4642}
     4643
     4644@book{Bic03,
     4645    keywords    = {concurrency, operating systems},
     4646    contributer = {pabuhr@plg},
     4647    author      = {Lubomir F. Bic and Alan C. Shaw},
     4648    title       = {Operating System Principles},
     4649    publisher   = {Prentice-Hall},
     4650    year        = 2003,
     4651}
     4652
     4653@techreport{milner88,
     4654    keywords    = {},
     4655    contributer = {gjditchfield@plg},
     4656    author      = {Robin Milner},
     4657    title       = {Operational and Algebraic Semantics of Concurrent Processes},
     4658    institution = {Laboratory for Foundations of Computer Science},
     4659    year        = 1988,
     4660    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
     4661    month       = feb,
     4662    number      = {ECS-LFCS-88-46}
     4663}
     4664
     4665@article{Ford82,
     4666    keywords    = {},
     4667    contributer = {pabuhr@plg},
     4668    author      = {G. Ford and B. Hansche},
     4669    title       = {Optional, Repeatable, and Varying Type Parameters},
     4670    journal     = sigplan,
     4671    volume      = 17,
     4672    number      = 2,
     4673    month       = feb,
     4674    year        = 1982,
     4675    pages       = {41-48},
     4676}
     4677
     4678@manual{pli,
     4679    keywords    = {PL/I},
     4680    contributer = {gjditchfield@plg},
     4681    key         = {IBM},
     4682    title       = {{OS} and {DOS} {PL/I} Reference Manual},
     4683    organization= {International Business Machines},
     4684    edition     = {first},
     4685    month       = sep,
     4686    year        = 1981,
     4687    note        = {Manual GC26-3977-0},
     4688}
     4689
     4690@techreport{D:overload,
     4691    keywords    = {overload resolution, compilation},
     4692    contributer = {gjditchfield@plg},
     4693    author      = {M. Dausmann et. al.},
     4694    title       = {Overloading in {Ada}},
     4695    institution = {Universitat Karlsruhe},
     4696    year        = 1979,
     4697    number      = {23/79},
     4698    comment     = {
     4699        Probably the earliest description of the two-pass (bottom-up,
     4700        top-down) overload resolution algorithm. See also
     4701        \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
     4702    }
     4703}
     4704
     4705@article{EB87,
     4706    keywords    = {packages, private types, assignment, equality},
     4707    contributer = {gjditchfield@plg},
     4708    author      = {J. Dana Eckart and Richard J. LeBlanc},
     4709    title       = {Overloading in the {Ada} Language: Is it too restrictive?},
     4710    journal     = {Computer Languages},
     4711    year        = 1987,
     4712    volume      = 12, number = {3/4}, pages = {163-172},
     4713    abstract    = {
     4714        Packages in the Ada language provide a mechanism for extending the
     4715        language through the development of additional data types.  Such
     4716        types can be better integrated into the language using operator
     4717        overloading; however, key limitations prevent new types from being
     4718        transparently integrated into the language.  Allowing function
     4719        names to overload private type names would give a cleaner and
     4720        clearer mechanism for building values of these types.  Furthermore,
     4721        by allowing redefinitions of ``:='' and by making it easier to
     4722        overload ``='' for private types, Ada coud be transformed into a
     4723        more expressive language.
     4724    }
     4725}
     4726
     4727@article{PW:overload,
     4728    keywords    = {compilation},
     4729    contributer = {gjditchfield@plg},
     4730    author      = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
     4731    title       = {Overloading in Preliminary {Ada}},
     4732    journal     = sigplan,
     4733    year        = 1980,
     4734    month       = nov, volume = 15, number = 11, pages = {47-56},
     4735    note        = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming
     4736         Language},
     4737    comment     = {
     4738        The two-pass (bottom-up, then top-down) algorithm, with a proof
     4739        that two passes suffice.  See also \cite{D:overload}.
     4740    }
     4741}
     4742
     4743@article{SR,
     4744    keywords    = {concurrency, messages, rendezvous},
     4745    contributer = {pabuhr@plg},
     4746    author      = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
     4747                  Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
     4748    title       = {An Overview of the {SR} Language and Implementation},
     4749    journal     = toplas,
     4750    month       = jan,
     4751    year        = 1988,
     4752    volume      = 10,
     4753    number      = 1,
     4754    pages       = {51-86},
     4755}
     4756
     4757% P
     4758
     4759@article{Andrews91,
     4760    keywords    = {general concurrency},
     4761    contributer = {pabuhr@plg},
     4762    author      = {Gregory R. Andrews},
     4763    title       = {Paradigms for Process Interaction in Distributed Programs},
     4764    journal     = acmcs,
     4765    volume      = 23,
     4766    number      = 1,
     4767    month       = mar,
     4768    year        = 1991,
     4769    pages       = {49-90},
     4770}
     4771
     4772@book{PPC++,
     4773    keywords    = {concurrency, parallel, distributed, C++},
     4774    contributer = {pabuhr@plg},
     4775    editor      = {Gregory V. Wilson and Paul Lu},
     4776    title       = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4777    publisher   = {MIT Press},
     4778    series      = {Scientific and Engineering Computation Series},
     4779    year        = 1996,
     4780    pages       = {1-42},
     4781}
     4782
     4783@incollection{Stroustrup96,
     4784    keywords    = {concurrency, C++},
     4785    contributer = {pabuhr@plg},
     4786    author      = {Bjarne Stroustrup},
     4787    title       = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4788    editor      = {Gregory V. Wilson and Paul Lu},
     4789    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4790    publisher   = {MIT Press},
     4791    series      = {Scientific and Engineering Computation Series},
     4792    year        = 1996,
     4793    pages       = {xxvi-xxvii},
     4794}
     4795
     4796@incollection{Yang96b,
     4797    keywords    = {concurrency, C++},
     4798    contributer = {pabuhr@plg},
     4799    author      = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
     4800    editor      = {Gregory V. Wilson and Paul Lu},
     4801    title       = {p{C}++},
     4802    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4803    publisher   = {MIT Press},
     4804    address     = {Cambridge, MA, USA},
     4805    series      = {Scientific and Engineering Computation Series},
     4806    pages       = {507-546},
     4807    year        = 1996,
     4808}
     4809
     4810@article{goguen84,
     4811    keywords    = {},
     4812    contributer = {gjditchfield@plg},
     4813    author      = {Goseph A. Goguen},
     4814    title       = {Parameterized Programming},
     4815    journal     = ieeese,
     4816    year        = 1984,
     4817    month       = sep, volume = "SE-10", number = 5, pages = {528-543},
     4818    abstract    = {
     4819        Parameterized programming is a powerful technique for the reliable
     4820        reuse of software.  In this technique, modules are parameterized
     4821        over very general interfaces that describe what properties of an
     4822        environment are required for the module to work correctly.
     4823        Reusability is enhanced by the flexibility of the parameterization
     4824        mechanism proposed here.  Reliability is further enhanced by
     4825        permitting interface requirements to include more than purely
     4826        syntactic information.  This paper introduces three new ideas that
     4827        seem especially useful in supporting parameterized programming: 1)
     4828        {\em theories}, which declare global properties of program modules
     4829        and interfaces; 2) {\em views}, which connect theories with program
     4830        modules in an elegant way; and 3) {\em module expressions}, a kind
     4831        of general structured program transformation which produces new
     4832        modules by modifying and combining existing modules.  Although
     4833        these ideas are illustrated with some simple examples in the OBJ
     4834        programming language, they should also be taken as proposals for an
     4835        Ada library system, for adding modules to Prolog, and as
     4836        considerations for future language design efforts.  OBJ is an
     4837        ultra-high level programming language, based upon rewrite rules,
     4838        that incorporates these ideas, and many others from modern
     4839        programming methodology.
     4840    }
     4841}
     4842
     4843@inproceedings{c++:templates,
     4844    author      = {Bjarne Stroustrup},
     4845    contributer = {gjditchfield@plg},
     4846    title       = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     4847    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
     4848    organization= {USENIX Association},
     4849    year        = 1988, pages = {1-18}
     4850}
     4851
     4852@inproceedings{Boehm85,
     4853    keywords    = {second-order unification},
     4854    contributer = {gjditchfield@plg},
     4855    author      = {Hans-J. Boehm},
     4856    title       = {Partial Polymorphic Type Inference is Undecidable},
     4857    booktitle   = {26th Annual Symposium on Foundations of Computer Science},
     4858    year        = 1985,
     4859    pages       = {339-345},
     4860    organization= {IEEE Computer Society},
     4861    publisher   = {IEEE Computer Society Press},
     4862    address     = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
     4863    summary     = {
     4864        Given a base typed lambda calculus with function types, type
     4865        abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
     4866        then type inference for the partially typed language
     4867        \begin{eqnarray}
     4868        \lambda x:\tau.e        &\Rightarrow& \lambda x.e       \\
     4869        \mbox{fix } x:\tau.e    &\Rightarrow& \mbox{fix } x.e   \\
     4870        e \tau                  &\Rightarrow& e ?
     4871        \end{eqnarray}
     4872        is undecidable.
     4873    }
     4874}
     4875
     4876@book{Pascal,
     4877    keywords    = {Pascal},
     4878    contributer = {pabuhr@plg},
     4879    author      = {Kathleen Jensen and Niklaus Wirth},
     4880    title       = {{P}ascal User Manual and Report},
     4881    publisher   = {Springer--Verlag},
     4882    year        = 1985,
     4883    edition     = {third},
     4884    note        = {Revised by Andrew B. Mickel and James F. Miner, ISO Pascal Standard}
     4885}
     4886
     4887@book{Pascal:old,
     4888    keywords    = {Pascal},
     4889    contributer = {pabuhr@plg},
     4890    author      = {Kathleen Jensen and Niklaus Wirth},
     4891    title       = {{P}ascal User Manual and Report},
     4892    publisher   = {Springer--Verlag},
     4893    year        = 1975,
     4894    edition     = {first},
     4895}
     4896
     4897@article{Turba85,
     4898    keywords    = {Pascal, exception handling, inheritance},
     4899    contributer = {pabuhr@plg},
     4900    author      = {Thomas N. Turba},
     4901    title       = {The {P}ascal Exception Handling Proposal},
     4902    journal     = sigplan,
     4903    volume      = 20,
     4904    number      = 8,
     4905    month       = aug,
     4906    year        = 1985,
     4907    pages       = {93-98},
     4908}
     4909
     4910@manual{Pascal/VS,
     4911    keywords    = {PL/I},
     4912    contributer = {pabuhr@plg},
     4913    key         = {IBM},
     4914    title       = {{P}ascal/{VS} Language Reference Manual},
     4915    organization= {International Business Machines},
     4916    edition     = {first},
     4917    year        = 1981,
     4918    note        = {Manual SH20-6168-1},
     4919}
     4920
     4921@article{Anderson90,
     4922    keywords    = {spin locks, back off, performance},
     4923    contributer = {pabuhr@plg},
     4924    author      = {Thomas E. Anderson},
     4925    title       = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
     4926    journal     = ieeepds,
     4927    month       = jan,
     4928    year        = 1990,
     4929    volume      = 1,
     4930    number      = 1,
     4931    pages       = {6-16},
     4932}
     4933
     4934@article{poly,
     4935    keywords    = {Poly, Standard ML, Russell, persistence},
     4936    contributer = {gjditchfield@plg},
     4937    author      = {David C. J. Matthews},
     4938    title       = {Poly Manual},
     4939    journal     = sigplan,
     4940    month       = sep, year = 1985,
     4941    volume      = 20, number = 9, pages = {52-76}
     4942}
     4943
     4944@techreport{Atkinson87b,
     4945    keywords    = {naming, persistence},
     4946    contributer = {pabuhr@plg},
     4947    author      = {M. P. Atkinson and R. Morrison},
     4948    title       = {Polymorphic Names and Iterations},
     4949    institution = {Universities of Glasgow and St. Andrews, Scotland},
     4950    number      = {PPRR-53-87},
     4951    month       = nov,
     4952    year        = 1987,
     4953}
     4954
     4955@book{Harland,
     4956    keywords    = {},
     4957    author      = {David M. Harland},
     4958    title       = {Polymorphic Programming Languages: Design and Implementation},
     4959    publisher   = {Ellis Horwood},
     4960    year        = 1984,
     4961    series      = {Computers and their Applications},
     4962    address     = {Market Cross House, Cooper Street, Chichester, West Sussex,
     4963        PO19 1EB, England},
     4964    summary     = {
     4965        The principles of Procedural Abstraction, Data Type Completeness,
     4966        Declaration Correspondence, and Orthogonality are ruthlessly applied
     4967        to the design of a polymorphic language.
     4968    }
     4969}
     4970
     4971@unpublished{poa,
     4972    keywords    = {Force N, type inference, reusability, transcendance},
     4973    contributer = {gjditchfield@plg},
     4974    author      = {G. V. Cormack and A. K. Wright},
     4975    title       = {Polymorphism, Overloading, and Abstraction},
     4976    note        = {personal communication}
     4977}
     4978
     4979@inproceedings{forceone:impl,
     4980    keywords    = {Parametric polymorphism, ForceOne},
     4981    contributer = {gjditchfield@plg},
     4982    author      = {G. V. Cormack and A. K. Wright},
     4983    title       = {Polymorphism in the Compiled Language {ForceOne}},
     4984    booktitle   = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
     4985    month       = jan,
     4986    year        = 1987,
     4987    pages       = {284-292},
     4988}
     4989
     4990@incollection{POOL-T,
     4991    keywords    = {objects, concurrency},
     4992    contributer = {pabuhr@plg},
     4993    author      = {Pierre America},
     4994    title       = {POOL-T: A Parallel Object-Oriented Language},
     4995    booktitle   = {Object-Oriented Concurrent Programming},
     4996    publisher   = {The MIT Press},
     4997    year        = 1987,
     4998    pages       = {199-220},
     4999    editor      = {Akinori Yonezawa and Mario Tokoro}
     5000}
     5001
     5002@article{Hardgrave76,
     5003    keywords    = {positional, keyword, parameters, arguments},
     5004    contributer = {pabuhr@plg},
     5005    author      = {W. T. Hardgrave},
     5006    title       = {Positional versus Keyword Parameter Communication in Programming Languages},
     5007    journal     = sigplan,
     5008    volume      = 11,
     5009    number      = 5,
     5010    month       = may,
     5011    year        = 1976,
     5012    pages       = {52-58},
     5013}
     5014
     5015@book{PowerPC,
     5016    key         = {PowerPC processor},
     5017    title       = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
     5018    publisher   = {Freescale Semiconductor},
     5019    volume      = {MPCFPE32B},
     5020    edition     = {Rev. 3},
     5021    month       = 9,
     5022    year        = 2005,
     5023}
     5024
     5025@article{Ada:preliminary,
     5026    keywords    = {Ada},
     5027    contributer = {pabuhr@plg},
     5028    author      = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
     5029                   and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
     5030                   and John G. P. Barnes and Olivier Roubine},
     5031    title       = {Preliminary {Ada} Reference Manual},
     5032    journal     = sigplan,
     5033    volume      = 14,
     5034    number      = 6,
     5035    month       = jun,
     5036    year        = 1979,
     5037    note        = {Part A},
     5038}
     5039
     5040@techreport{Forsythe,
     5041    author      = {John C. Reynolds},
     5042    title       = {Preliminary Design of the Programming Language {Forsythe}},
     5043    institution = {Carnegie Mellon University},
     5044    number      = {CMU-CS-88-159},
     5045    month       = jun,
     5046    year        = 1988,
     5047}
     5048
     5049@article{PRESTO,
     5050    keywords    = {concurrency, threads},
     5051    contributer = {dgharriss@plg},
     5052    author      = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
     5053    title       = {{PRESTO}: A System for Object-oriented Parallel Programming},
     5054    journal     = spe,
     5055    volume      = 18,
     5056    number      = 8,
     5057    month       = aug,
     5058    year        = 1988,
     5059    pages       = {713-732}
     5060}
     5061
     5062@book{Ben-Ari82,
     5063    keywords    = {concurrency, parallel, programming languages},
     5064    contributer = {pabuhr@plg},
     5065    author      = {Mordechai Ben-Ari},
     5066    title       = {Principles of Concurrent Programming},
     5067    publisher   = {Prentice-Hall International},
     5068    year        = 1982,
     5069}
     5070
     5071@book{Tennent81,
     5072    author      = {R. D. Tennent},
     5073    title       = {Principles of Programming Languages},
     5074    publisher   = {Prentice-Hall International},
     5075    year        = 1981,
     5076    series      = {Series in Computer Science}
     5077}
     5078
     5079@article{Lister77,
     5080    keywords    = {monitors, nested monitor calls},
     5081    contributer = {pabuhr@plg},
     5082    author      = {Andrew Lister},
     5083    title       = {The Problem of Nested Monitor Calls},
     5084    journal     = osr,
     5085    volume      = 11,
     5086    number      = 3,
     5087    month       = jul,
     5088    year        = 1977,
     5089    pages       = {5-7},
     5090}
     5091
     5092@article{psa:persistence,
     5093    keywords    = {persistence, first-class procedures, closure, PS-Algol,
     5094        Abstract Data Types},
     5095    contributer = {gjditchfield@plg},
     5096    author      = {Malcolm P. Atkinson and Ronald Morrison},
     5097    title       = {Procedures as Persistent Data Objects},
     5098    journal     = toplas,
     5099    volume      = {7},    number = {4},
     5100    pages       = {539-559},
     5101    month       = oct, year = 1985,
     5102    comment     = {
     5103        PS-Algol has ``structures'', accessible only through ``pntrs''.
     5104        Pntrs can refer to any type of structure.  Field references involve
     5105        a run-time check.  This, plus first-class procedures, can simulate
     5106        abstract data types.  Procedure variables operating on pntrs
     5107        simulate ADT operations.  A block defines a structure to implement
     5108        the ADT, and assigns procedures to the variables.  Functions
     5109        returning structures containing procedures  simulate multiple
     5110        implementations and parameterized ADTs.
     5111
     5112        An outer procedure that returns a procedure that contains
     5113        (non-local) references to the outer procedure's parameters
     5114        implements partial evaluation.
     5115
     5116        Modules can be simulated like ADT's.  The module itself is a
     5117        structure instance that is placed in persistent storage, and the
     5118        module is imported by fetching it from the persistent store.
     5119        Multiple instances of modules are easy.  Installation of new
     5120        versions can be done by replacing the version in the database.
     5121    }
     5122}
     5123
     5124@article{Procol89,
     5125    keywords    = {active objects, object-oriented languages,
     5126        object-based languages, explicit per-object protocol},
     5127    contributer = {akgoel@plg},
     5128    author      = {Jan van den Bos and Chris Laffra},
     5129    title       = {PROCOL: A Parallel Object Language with Protocols},
     5130    journal     = sigplan,
     5131    volume      = 24,
     5132    number      = 10,
     5133    month       = oct,
     5134    year        = 1989,
     5135    pages       = {95-102},
     5136    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
     5137    abstract    = {},
     5138}
     5139
     5140@book{Butenhof97,
     5141    keywords    = {PThreads, concurrency},
     5142    contributer = {pabuhr@plg},
     5143    author      = {David R. Butenhof},
     5144    title       = {Programming with {POSIX} Threads},
     5145    publisher   = {Addison-Wesley},
     5146    series      = {Professional Computing},
     5147    year        = 1997,
     5148}
     5149
     5150@book{SETL,
     5151    keywords    = {SETL},
     5152    contributer = {pabuhr@plg},
     5153    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
     5154    title       = {Programming with Sets: An Introduction to {SETL}},
     5155    publisher   = {Springer-Verlag},
     5156    year        = 1986,
     5157}
     5158
     5159@book{Genuys68,
     5160    keywords    = {contains Dijkstra's Cooperating Sequential Processes},
     5161    contributer = {pabuhr@plg},
     5162    editor      = {F. Genuys},
     5163    title       = {Programming Languages},
     5164    publisher   = {Academic Press},
     5165    address     = {London, New York},
     5166    year        = 1968,
     5167    note        = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
     5168}
     5169
     5170@manual{ANSI99:C,
     5171    keywords    = {ANSI C 99},
     5172    contributer = {pabuhr@plg},
     5173    title       = {Programming Languages -- {C}},
     5174    organization= {International Standard ISO/IEC 9899:1999 (E)},
     5175    publisher   = {American National Standards Institute},
     5176    address     = {www.ansi.org},
     5177    year        = 1999,
     5178}
     5179
     5180@manual{ANSI98:C++,
     5181    keywords    = {ANSI C++ 98},
     5182    contributer = {pabuhr@plg},
     5183    key         = {C++98},
     5184    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     5185    organization= {International Standard ISO/IEC 14882:1998 (E)},
     5186    publisher   = {American National Standards Institute},
     5187    address     = {www.ansi.org},
     5188    year        = 1998,
     5189}
     5190
     5191@manual{ANSI14:C++,
     5192    keywords    = {ISO/IEC C++ 14},
     5193    contributer = {pabuhr@plg},
     5194    key         = {C++14},
     5195    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     5196    edition     = {fourth},
     5197    organization= {International Standard ISO/IEC 14882:2014 (E)},
     5198    publisher   = {International Standard Organization},
     5199    address     = {http://www.iso.org},
     5200    year        = 2014,
     5201}
     5202
     5203@manual{MS:VisualC++,
     5204    keywords    = {Microsoft Visual C++},
     5205    contributer = {pabuhr@plg},
     5206    title       = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
     5207    organization= {Microsoft Corporation},
     5208    year        = 2002,
     5209    note        = {Microsoft Press, Redmond, Washington, U.S.A.},
     5210}
     5211
     5212@article{HasselBring00,
     5213    keywords    = {concurrency, prototyping},
     5214    contributer = {pabuhr@plg},
     5215    author      = {Wilhelm Hasselbring},
     5216    title       = {Programming Languages and Systems for Prototyping Concurrent Applications},
     5217    journal     = acmcs,
     5218    volume      = 32,
     5219    number      = 1,
     5220    month       = mar,
     5221    year        = 2000,
     5222    pages       = {43-79},
     5223}
     5224
     5225@article{LLgen,
     5226    keywords    = {ll(1), parser generator, separate compilation},
     5227    contributer = {gjditchfield@plg},
     5228    author      = {Dick Grune and Ceriel J. J. Jacobs},
     5229    title       = {A Programmer-friendly LL(1) Parser Generator},
     5230    journal     = spe,
     5231    month       = jan, year = 1988,
     5232    volume      = 18, number = 1, pages = {29-33},
     5233    comment     = {
     5234        LLgen generates C-language recursive-descent parsers.  The input
     5235        contains procedure-like rules with alternation and repetition
     5236        constructs on the right, and (typed) parameters on the left.
     5237        C actions are specified between items in the right side.
     5238        Alternation and repetition (reduce and shift) conflicts can be
     5239        resolved statically or at run time.
     5240
     5241        A grammar can be specified in several files.  All files must be
     5242        submitted to LLgen at once, but if the C file generated is no
     5243        different from the old version, then the old version is not
     5244        replaced and hence need not be recompiled, which saves lots of
     5245        time.
     5246
     5247        When an incorrect token is found, the automatic error recovery
     5248        algorithm discards tokens until an ``acceptable'' token is found;
     5249        if the acceptable token is not correct, a correct one is inserted.
     5250    }
     5251}
     5252
     5253@techreport{russell,
     5254    keywords    = {Russell},
     5255    contributer = {gjditchfield@plg},
     5256    author      = {H. Boehm and A. Demers and J. Donahue},
     5257    title       = {A Programmer's Introduction to Russell},
     5258    institution = {Rice University},
     5259    year        = 1985,
     5260    number      = {85-16}
     5261}
     5262
     5263@techreport{PDM89,
     5264    keywords    = {existential types, universal types},
     5265    contributer = {gjditchfield@plg},
     5266    author      = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
     5267    title       = {Programming in Higher-Order Typed Lambda Calculi},
     5268    institution = {School of Computer Science, Carnegie Mellon University},
     5269    year        = 1989,
     5270    address     = {Pittsburg, PA 15213-3890},
     5271    month       = mar, number = {CMU-CS-89-111},
     5272    abstract    = {
     5273        This tutorial presents a hierarchy of increasingly powerful
     5274        languages, beginning with Church's simply typed
     5275        \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
     5276        \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
     5277        fragment of Girard's \(\omega\)-order polymorphic
     5278        \(\lambda\)-calculus (\(F_\omega\)).  Our focus throughout is on
     5279        the unusual style of programming that arises in these languages,
     5280        where all functions are total and the primary control construct is
     5281        iteration rather than general recursion.
     5282    }
     5283}
     5284
     5285@book{Modula-2,
     5286    keywords    = {modules, coroutines},
     5287    contributer = {pabuhr},
     5288    author      = {Niklaus Wirth},
     5289    title       = {Programming in Modula-2},
     5290    publisher   = {Springer-Verlag},
     5291    year        = 1988,
     5292    edition     = {fourth},
     5293    series      = {Texts and Monographs in Computer Science},
     5294}
     5295
     5296@manual{Ada,
     5297    keywords    = {Ada, packages, tasks, exceptions},
     5298    contributer = {pabuhr@plg},
     5299    title       = {The Programming Language {Ada}: Reference Manual},
     5300    organization= {United States Department of Defense},
     5301    edition     = {{ANSI/MIL-STD-1815A-1983}},
     5302    month       = feb,
     5303    year        = 1983,
     5304    note        = {Published by Springer-Verlag}
     5305}
     5306
     5307@manual{ada:old,
     5308    keywords    = {Ada, packages, tasks, exceptions},
     5309    contributer = {gjditchfield@plg},
     5310    title       = {The Programming Language {Ada}: Reference Manual},
     5311    organization= {United States Department of Defense},
     5312    publisher   = {Springer-Verlag},
     5313    year        = 1981
     5314}
     5315
     5316@book{Ghezzi,
     5317    keywords    = {},
     5318    author      = {Carlo Ghezzi and Mehdi Jazayeri},
     5319    title       = {Programming Language Concepts},
     5320    publisher   = {Wiley},
     5321    year        = 1982
     5322}
     5323
     5324@article{ConcurrentPascal,
     5325    keywords    = {Concurrent Pascal},
     5326    contributer = {pabuhr@plg},
     5327    author      = {Per {Brinch Hansen}},
     5328    title       = {The Programming Language Concurrent Pascal},
     5329    journal     = ieeese,
     5330    volume      = 2,
     5331    month       = jun,
     5332    year        = 1975,
     5333    pages       = {199-206}
     5334}
     5335
     5336@phdthesis{Buhr85:thesis,
     5337    keywords    = {},
     5338    contributer = {pabuhr@plg},
     5339    author      = {P. A. Buhr},
     5340    title       = {A Programming System},
     5341    school      = {University of Manitoba},
     5342    year        = {1985}
     5343}
     5344
     5345@techreport{pierce91,
     5346    keywords    = {typed lambda calculus},
     5347    contributer = {gjditchfield@plg},
     5348    author      = {Benjamin C. Pierce},
     5349    title       = {Programming with Intersection Types, Union Types, and Polymorphism},
     5350    institution = {Carnegie Mellon University},
     5351    year        = 1991,
     5352    month       = feb, number = "CMU-CS-91-106",
     5353    annote      = {
     5354        Discusses a typed lambda calculus with
     5355        \begin{itemize}
     5356        \item
     5357        Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
     5358        \tau_i\) for all \(i\).
     5359        \item
     5360        Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
     5361        and with implicit coercions from \(tau_i\) to \(\tau\).  Only
     5362        operations valid for both element types can be applied to the
     5363        union; there are no projections.  Union types are to variant
     5364        records as set union is to disjoint set union.
     5365        \item
     5366        Function types and universal quantification, with subtyping rules.
     5367        When functions and arguments intersections, the result of
     5368        application is the intersection of all valid combinations.
     5369        \item
     5370        Distribution rules for combinations of types.
     5371        \item
     5372        "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
     5373        union, has type \(\tau\) if \(e'\) has that type with \(x\) having
     5374        every element type of the union.
     5375        \item
     5376        "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
     5377        typechecks \(e\) with \(t\) bound to each choice, and intersects
     5378        the results.
     5379        \end{itemize}
     5380
     5381        Examples include: type of "natural" numbers, treated as a union of
     5382        "zero" and "positive" types; default parameters, faked by using an
     5383        argument that is an intersection of a data type and a function
     5384        taking an explicit argument.
     5385
     5386        Unions can be mostly faked, according to Mitchell:
     5387        \[\tau_1\vee\tau_2 \equiv
     5388             \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
     5389    }
     5390}
     5391
     5392@article{promises,
     5393    keywords    = {futures, Argus, call streams, rpc},
     5394    contributer = {gjditchfield@plg},
     5395    author      = {Barbara Liskov and Liuba Shrira},
     5396    title       = {Promises: Linguistic Support for Efficient Asynchronous
     5397          Procedure Calls in Distributed Systems},
     5398    journal     = sigplan,
     5399    year        = 1988,
     5400    month       = jul, volume = 23, number = 7, pages = {260-267},
     5401    note        = {Proceedings of the SIGPLAN '88 Conference on Programming Language
     5402         Design and Implementation},
     5403    abstract    = {
     5404        This paper deals with the integration of an efficient asynchronous
     5405        remote procedure call mechanism into a programming language.  It
     5406        describes a new data type called a {\em promise} that was designed
     5407        to support asynchronous calls.  Promises allow a caller to run in
     5408        parallel with a call and to pick up the results of the call,
     5409        including any exceptions it raises, in a convenient and type-safe
     5410        manner.  The paper also discusses efficient composition of
     5411        sequences of asynchronous calls to different locations in a
     5412        network.
     5413    }
     5414}
     5415
     5416@article{Cook89,
     5417    keywords    = {},
     5418    contributer = {gjditchfield@plg},
     5419    author      = {W. R. Cook},
     5420    title       = {A Proposal for Making {Eiffel} Type-safe},
     5421    journal     = {The Computer Journal},
     5422    year        = 1989,
     5423    volume      = 32, number = 4, pages = {305-311},
     5424    abstract    = {
     5425       
     5426    }
     5427}
     5428
     5429@inproceedings{Foxall79,
     5430    keywords    = {},
     5431    contributer = {pabuhr@plg},
     5432    author      = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
     5433    title       = {{PROTEL}: A High Level Language for Telephony},
     5434    booktitle   = {Proceedings 3rd International Computer Software and Applications Conference},
     5435    month       = nov,
     5436    year        = 1979,
     5437    pages       = {193-197},
     5438}
     5439
     5440@techreport{PS-Algol,
     5441    keywords    = {algol, persistence},
     5442    contributer = {pabuhr@plg},
     5443    key         = {PS-Algol},
     5444    title       = {The {PS-Algol} Reference Manual, 4th Ed.},
     5445    author      = {},
     5446    institution = {University of Glasgow and St. Andrews, Scotland},
     5447    number      = {PPRR 12},
     5448    month       = jun,
     5449    year        = 1987,
     5450}
     5451
     5452@manual{Python,
     5453    keywords    = {Python},
     5454    contributer = {pabuhr},
     5455    title       = {Python Reference Manual, Release 2.5},
     5456    author      = {Guido van Rossum},
     5457    organization= {Python Software Foundation},
     5458    month       = sep,
     5459    year        = 2006,
     5460    note        = {Fred L. Drake, Jr., editor},
     5461}
     5462
     5463% Q
     5464
     5465@article{Grossman06,
     5466 keywords = {Cyclone, existential types, polymorphism, type variables},
     5467 contributer = {a3moss@plg},
     5468 author = {Grossman, Dan},
     5469 title = {Quantified Types in an Imperative Language},
     5470 journal = toplas,
     5471 issue_date = {May 2006},
     5472 volume = {28},
     5473 number = {3},
     5474 month = may,
     5475 year = {2006},
     5476 issn = {0164-0925},
     5477 pages = {429--475},
     5478 numpages = {47},
     5479 url = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
     5480 doi = {10.1145/1133651.1133653},
     5481 acmid = {1133653},
     5482 publisher = {ACM},
     5483 address = {New York, NY, USA},
     5484}
     5485
     5486@article{Hoare61,
     5487    keywords    = {quick sort},
     5488    contributer = {pabuhr@plg},
     5489    author      = {C. A. R. Hoare},
     5490    title       = {Algorithms 63/64: Partition/Quicksort},
     5491    journal     = cacm,
     5492    volume      = 4,
     5493    number      = 7,
     5494    month       = jul,
     5495    year        = 1961,
     5496    pages       = {321},
     5497}
     5498
     5499% R
     5500
     5501@article{Ada:rationale:preliminary,
     5502    keywords    = {Ada},
     5503    contributer = {pabuhr@plg},
     5504    author      = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
     5505                   J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
     5506    title       = {Rationale for the Design of the {ADA} Programming Language},
     5507    journal     = sigplan,
     5508    volume      = 14,
     5509    number      = 6,
     5510    month       = jun,
     5511    year        = 1979,
     5512    note        = {Part B},
     5513}
     5514
     5515@book{Ada:rationale,
     5516    keywords    = {Ada},
     5517    contributer = {pabuhr@plg},
     5518    author      = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
     5519    title       = {Rationale for the Design of the {ADA} Programming Language},
     5520    publisher   = {Under Secretary of Defense, Research and Engineering},
     5521    year        = 1986,
     5522    address     = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
     5523}
     5524
     5525@manual{Ada95,
     5526    keywords    = {Ada},
     5527    contributer = {pabuhr@plg},
     5528    title       = {{A}da Reference Manual},
     5529    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
     5530    organization = {Intermetrics, Inc.},
     5531    month       = dec,
     5532    year        = 1995,
     5533    note        = {Language and Standards Libraries}
     5534}
     5535
     5536@manual{Ada12,
     5537    keywords    = {Ada},
     5538    contributer = {pabuhr@plg},
     5539    title       = {Programming languages -- {Ada}},
     5540    edition     = {third},
     5541    organization= {International Standard ISO/IEC 1989:2014},
     5542    publisher   = {International Standard Organization},
     5543    address     = {http://www.iso.org},
     5544    year        = 2012,
     5545}
     5546
     5547@manual{Ada95:annotated,
     5548    keywords    = {Ada},
     5549    contributer = {pabuhr@plg},
     5550    title       = {Annotated {A}da Reference Manual},
     5551    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
     5552    organization = {Intermetrics, Inc.},
     5553    month       = dec,
     5554    year        = 1995,
     5555    note        = {Language and Standards Libraries}
     5556}
     5557
     5558@book{JavaRT00,
     5559    keywords    = {real time, draft},
     5560    contributer = {pabuhr@plg},
     5561    author      = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
     5562    title       = {The Real-Time Specification for {J}ava},
     5563    series      = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
     5564    publisher   = {Addison-Wesley},
     5565    year        = 2000,
     5566}
     5567
     5568@manual{JavaRT99,
     5569    organization= {Real Time for Java Experts Group},
     5570    address     = {{\small\textsf{http://\-www.rtj.org}}},
     5571    month       = sep,
     5572    year        = 1999,
     5573}
     5574
     5575@article{Robinson48,
     5576    keywords    = {recursion, Ackermann function},
     5577    contributer = {pabuhr@plg},
     5578    author      = {Raphael Mitchel Robinson},
     5579    title       = {Recursion and Double Recursion},
     5580    publisher   = {American Mathematical Society},
     5581    journal     = {Bulletin of the American Mathematical Society},
     5582    volume      = 54,
     5583    pages       = {987-993},
     5584    year        = 1948,
     5585}
     5586
     5587@article{Dijkstra:red,
     5588    keywords    = {ada},
     5589    contributer = {gjditchfield@plg},
     5590    author      = {Edsger W. Dijkstra},
     5591    title       = {On the RED Language submitted to the DoD},
     5592    journal     = sigplan,
     5593    year        = 1978,
     5594    month       = oct,
     5595    volume      = 13,
     5596    number      = 10,
     5597    pages       = {27-32},
     5598}
     5599
     5600@article{RemoteRendezvous,
     5601    keywords    = {rendezvous, concurrency},
     5602    contributer = {pabuhr@plg},
     5603    author      = {N. D. Gammage and R. F. Kamel and L. M. Casey},
     5604    title       = {Remote Rendezvous},
     5605    journal     = spe,
     5606    month       = oct,
     5607    year        = 1987,
     5608    volume      = 17,
     5609    number      = 10,
     5610    pages       = {741-755}
     5611}
     5612
     5613@article{Euclid,
     5614    keywords    = {Euclid},
     5615    contributer = {pabuhr@plg},
     5616    author      = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
     5617    title       = {Report on the Programming Language Euclid},
     5618    journal     = sigplan,
     5619    volume      = 12,
     5620    number      = 2,
     5621    month       = feb,
     5622    year        = 1977,
     5623    pages       = {1-79}
     5624}
     5625
     5626@techreport{LOGLAN88,
     5627    keywords    = {LOGLAN},
     5628    contributer = {pabuhr@plg},
     5629    author      = {Boleslaw Ciesielski and Antoni Kreczmar and Marek Lao and Andrzej Litwiniuk and Teresa Przytycka and Andrzej Salwicki and Jolanta Warpechowska and Marek Warpechowski and Andrzej Szalas and Danuta Szczepanska--Wasersztrum},
     5630    title       = {Report on the Programming Language LOGLAN'88},
     5631    institution = {Institute of Informatics, University of Warsaw},
     5632    address     = {Pkin 8th Floor, 00-901 Warsaw, Poland},
     5633    number      = {},
     5634    month       = dec,
     5635    year        = 1988,
     5636}
     5637
     5638@article{FH91,
     5639    keywords    = {lcc},
     5640    contributer = {gjditchfield@plg},
     5641    author      = {Christopher W. Fraser and David R. Hanson},
     5642    title       = {A Retargetable Compiler for {ANSI} {C}},
     5643    journal     = sigplan,
     5644    year        = 1991,
     5645    month       = oct, volume = 26, number = 10, pages = {29-43},
     5646    abstract    = {
     5647        {\tt lcc} is a new retargetable compiler for ANSI C.  Versions for
     5648        the VAX, Motorola 68020, SPARC, and MIPS are in production use at
     5649        Princeton University and at AT\&T Bell Laboratories.  With a few
     5650        exceptions, little about {\tt lcc} is unusual---it integrates
     5651        several well engineered, existing techniques---but it is smaller
     5652        and faster than most other C compilers, and it generates code of
     5653        comparable quality.  {\tt lcc}'s target-independent front end
     5654        performs a few simple, but effective, optimizations that contribute
     5655        to good code; examples include simulating register declarations and
     5656        partitioning switch statements into dense tables.  It also
     5657        implements target-independent function tracing and expression-level
     5658        profiling.
     5659    }
     5660}
     5661
     5662@article{Algol68revised,
     5663    keywords    = {},
     5664    contributer = {gjditchfield@plg},
     5665    author      = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
     5666        C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
     5667        Meertens and R. G. Fisher},
     5668    title       = {Revised Report on the Algorithmic Language {ALGOL} 68},
     5669    journal     = sigplan,
     5670    year        = 1977,
     5671    month       = may,
     5672    volume      = 12,
     5673    number      = 5,
     5674    pages       = {1-70}
     5675}
     5676
     5677@article{scheme,
     5678    keywords    = {},
     5679    contributer = {gjditchfield@plg},
     5680    author      = {Jonathan Rees and William Clinger},
     5681    title       = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
     5682    journal     = sigplan,
     5683    year        = 1986,
     5684    month       = dec,
     5685    volume      = 21,
     5686    number      = 12,
     5687    pages       = {37-79},
     5688}
     5689
     5690@article{scheme5,
     5691    keywords    = {scheme},
     5692    contributer = {pabuhr@plg},
     5693    author      = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
     5694                   R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
     5695                   G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
     5696    title       = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
     5697    journal     = sigplan,
     5698    year        = 1998,
     5699    month       = sep,
     5700    volume      = 33,
     5701    number      = 9,
     5702    pages       = {26-76},
     5703}
     5704
     5705@manual{Rust,
     5706    keywords    = {Rust programming language},
     5707    contributer = {pabuhr@plg},
     5708    title       = {The {Rust} Programming Language},
     5709    organization= {The Rust Project Developers},
     5710    year        = 2015,
     5711    note        = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang.org/\-reference.html}},
     5712}
     5713
     5714% S
     5715
     5716@inproceedings{Michael04,
     5717    keywords    = {lock free, dynamic memory allocation},
     5718    contributer = {pabuhr@plg},
     5719    author      = {Maged M. Michael},
     5720    title       = {Scalable Lock-free Dynamic Memory Allocation},
     5721    booktitle   = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
     5722    location    = {Washington DC, USA},
     5723    publisher   = {ACM},
     5724    address     = {New York, NY, USA},
     5725    volume      = 39,
     5726    year        = 2004,
     5727    month       = jun,
     5728    pages       = {35-46},
     5729}
     5730
     5731@article{Anderson92,
     5732    keywords    = {light-weight tasks},
     5733    contributer = {pabuhr@plg},
     5734    author      = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
     5735    title       = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
     5736    journal     = tocs,
     5737    volume      = 10,
     5738    number      = 1,
     5739    month       = feb,
     5740    year        = 1992,
     5741    pages       = {53-79},
     5742}
     5743
     5744@manual{SELF,
     5745    keywords    = {programming language, obect-oriented, polymorphism},
     5746    contributer = {pabuhr@plg},
     5747    author      = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
     5748                   and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
     5749    title       = {The {SELF} 3.0 Programmer's Reference Manual},
     5750    organization= {Sun Microsystems, Inc., and Stanford University},
     5751    year        = 1993,
     5752}
     5753
     5754@inproceedings{Cardelli84,
     5755    keywords    = {subtypes, recursive types, records, variants, object oriented},
     5756    contributer = {gjditchfield@plg},
     5757    author      = {Luca Cardelli},
     5758    title       = {A Semantics of Multiple Inheritance},
     5759    booktitle   = {Semantics of Data Types},
     5760    year        = 1984,
     5761    pages       = {51-67},
     5762    editor      = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
     5763    publisher   = {Springer-Verlag},
     5764    note        = {Lecture Notes in Computer Science v. 173},
     5765}
     5766
     5767@techreport{Adve95,
     5768    keywords    = {shared memory, consistency models},
     5769    contributer = {pabuhr@plg},
     5770    author      = {Sarita V. Adve and Kourosh Gharachorloo},
     5771    title       = {Shared Memory Consistency Models: A Tutorial},
     5772    institution = {Western Research Laboratory},
     5773    address     = {250 University Avenue, Palo Alto, California, 94301, U.S.A.},
     5774    number      = {7},
     5775    month       = sep,
     5776    year        = 1995,
     5777    note        = {\href{http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-7.pdf}{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-WRL-95-7.pdf}}, Reprinted in \cite{Adve95reprint}.},
     5778}
     5779
     5780@article{Adve95reprint,
     5781    keywords    = {shared memory, consistency models},
     5782    contributer = {pabuhr@plg},
     5783    author      = {Sarita V. Adve and Kourosh Gharachorloo},
     5784    journal     = {Computer},
     5785    title       = {Shared Memory Consistency Models: A Tutorial},
     5786    month       = dec,
     5787    year        = 1996,
     5788    volume      = 29,
     5789    number      = 12,
     5790    pages       = {66-76},
     5791}
     5792
     5793@inproceedings{Howard76b,
     5794    keywords    = {monitors},
     5795    contributer = {pabuhr@plg},
     5796    author      = {J. H. Howard},
     5797    title       = {Signaling in Monitors},
     5798    booktitle   = {Proceedings Second International Conference Software Engineering},
     5799    address     = {San Francisco, U.S.A},
     5800    publisher   = {IEEE Computer Society},
     5801    month       = oct,
     5802    year        = 1976,
     5803    pages       = {47-52}
     5804}
     5805
     5806@techreport{Schemenauer01,
     5807    keywords    = {Phthon, generator, coroutine},
     5808    contributer = {pabuhr@plg},
     5809    author      = {Neil Schemenauer and Tim Peters and Magnus Lie Hetland},
     5810    title       = {Simple Generators},
     5811    month       = may,
     5812    year        = 2001,
     5813    note        = {{\small\textsf{http://www.python.org/peps/pep-0255.html}}},
     5814}
     5815
     5816@inproceedings{Michael96,
     5817    keywords    = {compare_and_swap, concurrent queue, lock-free, multiprogramming, non-blocking},
     5818    contributer = {pabuhr@plg},
     5819    author      = {Maged M. Michael and Michael L. Scott},
     5820    title       = {Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms},
     5821    booktitle   = {Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing},
     5822    series      = {PODC'96},
     5823    year        = 1996,
     5824    location    = {Philadelphia, Pennsylvania, USA},
     5825    pages       = {267--275},
     5826    numpages    = {9},
     5827    publisher   = {ACM},
     5828    address     = {New York, NY, USA},
     5829}
     5830
     5831@inproceedings{Dice10,
     5832    keywords    = {hardware, synchronization, transactional memory},
     5833    author      = {Dave Dice and Yossi Lev and Virendra J. Marathe and Mark Moir and Dan Nussbaum and Marek Olszewski},
     5834    title       = {Simplifying Concurrent Algorithms by Exploiting Hardware Transactional Memory},
     5835    booktitle   = {Proceedings of the Twenty-second Annual ACM Symposium on Parallelism in Algorithms and Architectures},
     5836    series      = {SPAA'10},
     5837    year        = 2010,
     5838    location    = {Thira, Santorini, Greece},
     5839    pages       = {325-334},
     5840    numpages    = {10},
     5841    publisher   = {ACM},
     5842    address     = {New York, NY, USA},
     5843}
     5844
     5845@article{PDM:overload,
     5846    keywords    = {compilation},
     5847    contributer = {gjditchfield@plg},
     5848    author      = {Tom Pennello and Frank DeRemer and Richard Meyers},
     5849    title       = {A Simplified Operator Identification Scheme for {Ada}},
     5850    journal     = sigplan,
     5851    year        = 1980,
     5852    month       = {July--August},
     5853    volume      = 15,
     5854    number      = {7/8},
     5855    pages       = {82-87},
     5856    comment     = {
     5857        The two-pass (bottom-up, top-down) overload resolution algorithm
     5858        for Ada, with a proof that two passes suffice and a claim that two
     5859        are necessary.  See \cite{D:overload}.
     5860    }
     5861}
     5862
     5863@book{SimulaBegin,
     5864    author      = {Graham M. Birtwistle and Ole-Johan Dahl and Bj{\o}rn Myhrhaug and Kristen Nygaard},
     5865    title       = {{SIMULA} begin},
     5866    publisher   = {Studentlitteratur},
     5867    year        = {1980},
     5868    address     = {Lund, Sweden},
     5869    edition     = {second},
     5870}
     5871
     5872@book{Simula67,
     5873    author      = "O-J Dahl and B. Myhrhaug and K. Nygaard",
     5874    address     = "Oslo Norway",
     5875    month       = oct,
     5876    year        = 1970,
     5877    publisher   = "Norwegian Computing Center",
     5878    title       = "Simula67 Common Base Language"
     5879}
     5880
     5881@book{smalltalk,
     5882    keywords    = {Smalltalk, abstract class, protocol},
     5883    contributer = {gjditchfield@plg},
     5884    author      = {A. Goldberg and D. Robson},
     5885    title       = {Smalltalk-80: The Language and its Implementation},
     5886    publisher   = {Addison-Wesley},
     5887    year        = 1983
     5888}
     5889
     5890@inproceedings{Edelson92,
     5891    keywords    = {persistence, pointers},
     5892    contributer = {pabuhr@plg},
     5893    author      = {Daniel R. Edelson},
     5894    title       = {Smart Pointers: They're Smart, but They're Not Pointers},
     5895    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
     5896    organization= {USENIX Association},
     5897    address     = {Portland, Oregon, U.S.A.},
     5898    month       = aug,
     5899    year        = 1992,
     5900    pages       = {1-19},
     5901}
     5902
     5903@book{SNOBOL,
     5904    keywords    = {SNOBOL4},
     5905    contributer = {pabuhr@plg},
     5906    author      = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
     5907    title       = {The SNOBOL4 Programming Language},
     5908    edition     = {second},
     5909    publisher   = {Prentice-Hall},
     5910    year        = 1971,
     5911}
     5912
     5913@article{Sutter05b,
     5914    keywords    = {concurrency},
     5915    contributer = {pabuhr@plg},
     5916    author      = {Herb Sutter and James Larus},
     5917    title       = {Software and the Concurrency Revolution},
     5918    journal     = Queue,
     5919    year        = 2005,
     5920    month       = sep,
     5921    volume      = 3,
     5922    number      = 7,
     5923    pages       = {54-62},
     5924}
     5925
     5926@inproceedings{raytheon,
     5927    keywords    = {cobol},
     5928    contributer = {gjditchfield@plg},
     5929    author      = {Robert G. Lanergan and Charles A. Grasso},
     5930    title       = {Software Engineering with Reusable Designs and Code},
     5931    booktitle   = {Workshop on Reusability in Programming},
     5932    year        = 1983,
     5933    month       = sep,
     5934    pages       = {224-234},
     5935    organization= {{ITT} Programming},
     5936    summary     = {
     5937        60\% of business application design and code are redundant.
     5938        Three standard program plans are used.  Reuse doubles productivity
     5939        during development and greatly helps program comprehension during
     5940        maintenance.
     5941    }
     5942}
     5943
     5944@article{Hecht86,
     5945    keywords    = {exception handling, robustness},
     5946    contributer = {pabuhr@plg},
     5947    author      = {H. Hecht and M. Hecht},
     5948    title       = {Software Reliability in the Systems Context},
     5949    journal     = ieeese,
     5950    year        = 1986,
     5951    volume      = 12,
     5952    number      = 1,
     5953    pages       = {51-58},
     5954}
     5955
     5956@inproceedings{Herlihy03,
     5957    author      = {Maurice Herlihy and Victor Luchangco and Mark Moir and William N. {Scherer III}},
     5958    title       = {Software Transactional Memory for Dynamic-sized Data Structures},
     5959    booktitle   = {Proceedings of the Twenty-second Annual Symposium on Principles of Distributed Computing},
     5960    series      = {PODC '03},
     5961    year        = {2003},
     5962    location    = {Boston, Massachusetts},
     5963    pages       = {92-101},
     5964    numpages    = {10},
     5965    publisher   = {ACM},
     5966    address     = {New York, NY, USA},
     5967}
     5968
     5969@article{Dijkstra65a,
     5970    keywords    = {N-thread software-solution mutual exclusion},
     5971    contributer = {pabuhr@plg},
     5972    author      = {Edsger W. Dijkstra},
     5973    title       = {Solution of a Problem in Concurrent Programming Control},
     5974    journal     = cacm,
     5975    volume      = 8,
     5976    number      = 9,
     5977    month       = sep,
     5978    year        = 1965,
     5979    pages       = {569},
     5980    publisher   = {ACM},
     5981    address     = {New York, NY, USA},
     5982}
     5983
     5984@inproceedings{Chen05,
     5985    keywords    = {fixed-priority, preemption},
     5986    contributer = {pabuhr@plg},
     5987    author      = {Jiongxiong Chen and Ashif Harji and Peter Buhr},
     5988    title       = {Solution Space for Fixed-Priority with Preemption Threshold},
     5989    booktitle   = {Proceedings of the 11th Real Time and Embedded Technology and Applications Symposium (RTAS'05)},
     5990    organization= {IEEE},
     5991    address     = {San Francisco, CA, U.S.A},
     5992    month       = mar,
     5993    year        = 2005,
     5994    pages       = {385-394}
     5995}
     5996
     5997@inproceedings{Tiemann88,
     5998    keywords    = {wrappers},
     5999    contributer = {pabuhr@plg},
     6000    author      = {Michael D. Tiemann},
     6001    title       = {Solving the RPC problem in GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     6002    booktitle   = {Proceedings of the USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
     6003    organization= {USENIX Association},
     6004    address     = {Denver, Colorado, U.S.A},
     6005    month       = oct,
     6006    year        = 1988,
     6007    pages       = {343-361}
     6008}
     6009
     6010@book{Campbell74,
     6011    keywords    = {path expressions},
     6012    contributer = {pabuhr@plg},
     6013    author      = {R. H. Campbell and A. N. Habermann},
     6014    title       = {The Specification of Process Synchronization by Path Expressions},
     6015    publisher   = {Springer-Verlag},
     6016    year        = 1974,
     6017    volume      = 16,
     6018    pages       = {89-102},
     6019    series      = {Lecture Notes in Computer Science},
     6020}
     6021
     6022@article{Bentley85,
     6023    keywords    = {CSP, concurrency},
     6024    contributer = {pabuhr@plg},
     6025    author      = {J. Bentley},
     6026    title       = {A Spelling Checker},
     6027    journal     = cacm,
     6028    month       = may,
     6029    year        = 1985,
     6030    volume      = 28,
     6031    number      = 5,
     6032    pages       = {456-462},
     6033}
     6034
     6035@manual{POSIX01,
     6036    keywords    = {POSIX, Standard},
     6037    contributer = {pabuhr@plg},
     6038    key         = {POSIX},
     6039    title       = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), System Interface, Issue 6},
     6040    organization= {IEEE and The Open Group},
     6041    year        = 2001,
     6042}
     6043
     6044@manual{POSIX08,
     6045    keywords    = {POSIX, Standard},
     6046    contributer = {pabuhr@plg},
     6047    key         = {POSIX},
     6048    title       = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), Base Specifications, Issue 7},
     6049    organization= {IEEE and The Open Group},
     6050    year        = 2008,
     6051}
     6052
     6053@inproceedings{ML:NJ,
     6054    keywords    = {continuations, ML},
     6055    contributer = {pabuhr@plg},
     6056    author      = {A. Appel and D. MacQueen},
     6057    title       = {A Standard {ML} Compiler},
     6058    booktitle   = {Functional Programming Languages and Computer Architecture},
     6059    publisher   = {Springer-Verlag},
     6060    series      = {Lecture Notes in Computer Science},
     6061    volume      = 274,
     6062    year        = 1987,
     6063    pages       = {301-324},
     6064}
     6065
     6066@techreport{MLreport,
     6067    keywords    = {ML, polymorphism},
     6068    contributer = {pabuhr@plg},
     6069    author      = {R. Milner},
     6070    title       = {The Standard {ML} Core Language},
     6071    institution = {},
     6072    number      = {Polymorphism II.2},
     6073    month       = oct,
     6074    year        = 1985
     6075}
     6076
     6077@inproceedings{Ghelli,
     6078    keywords    = {},
     6079    contributer = {gjditchfield@plg},
     6080    author      = {Giorgio Ghelli},
     6081    title       = {A Static Type System for Message Passing},
     6082    crossref    = "OOPSLA91",
     6083    pages       = {129-145},
     6084    summary     = {
     6085        A strong, statically checked type system for object oriented
     6086        languages is defined by modelling methods as overloaded functions
     6087        with a "self" parameter, with dynamic overload resolution.  This
     6088        allows covariant method redefinition.  However, if equality is
     6089        covariantly redefined for Point and ColoredPoint classes, and a
     6090        ColoredPoint is compared to a Point, Point equality will be used,
     6091        even if self is the colored point!
     6092    }
     6093}
     6094
     6095@article{Dijkstra68b,
     6096    keywords    = {semaphore, P/V},
     6097    contributer = {pabuhr@plg},
     6098    author      = {E. W. Dijkstra},
     6099    title       = {The Structure of the ``{THE}''--Multiprogramming System},
     6100    journal     = cacm,
     6101    month       = may,
     6102    year        = 1968,
     6103    volume      = 11,
     6104    number      = 5,
     6105    pages       = {341-346}
     6106}
     6107
     6108@book{Holt78,
     6109    keywords    = {operating systems, concurrency},
     6110    contributer = {pabuhr@plg},
     6111    author      = {R. C. Holt and G. S. Graham and E. D. Lazowska and M. A. Scott},
     6112    title       = {Structured Concurrent Programming with Operating System Applications},
     6113    publisher   = {Addison-Wesley},
     6114    year        = 1978,
     6115}
     6116
     6117@article{Stevens74,
     6118    keywords    = {coupling, cohesion},
     6119    contributer = {pabuhr@plg},
     6120    author      = {W. P. Stevens and and G. J. Myers and L. L. Constantine},
     6121    title       = {Structured Design},
     6122    journal     = ibmsj,
     6123    year        = 1974,
     6124    volume      = 13,
     6125    number      = 2,
     6126    pages       = {115-139},
     6127}
     6128
     6129@article{Hansen72b,
     6130    keywords    = {critical region},
     6131    contributer = {pabuhr@plg},
     6132    author      = {Per {Brinch Hansen}},
     6133    title       = {Structured Multiprogramming},
     6134    journal     = cacm,
     6135    volume      = 15,
     6136    number      = 7,
     6137    month       = jul,
     6138    year        = 1972,
     6139    pages       = {574-578},
     6140}
     6141
     6142@article{Knuth74,
     6143    keywords    = {structured programming, goto statement},
     6144    contributer = {pabuhr@plg},
     6145    author      = {Donald E. Knuth},
     6146    title       = {Structured Programming with go to Statements},
     6147    journal     = acmcs,
     6148    volume      = 6,
     6149    number      = 4,
     6150    month       = dec,
     6151    year        = 1974,
     6152    pages       = {261-301},
     6153    issn        = {0360-0300},
     6154    doi         = {http://doi.acm.org/10.1145/356635.356640},
     6155    publisher   = {ACM},
     6156    address     = {New York, NY, USA},
     6157}
     6158
     6159@article{Lang98,
     6160    keywords    = {real-time, exception handling},
     6161    contributer = {pabuhr@plg},
     6162    author      = {Jun Lang and David B. Stewart},
     6163    title       = {A Study of the Applicability of Existing Exception-Handling Techniques to Component-Based Real-Time Software Technology},
     6164    journal     = toplas,
     6165    month       = mar,
     6166    year        = 1998,
     6167    volume      = 20,
     6168    number      = 2,
     6169    pages       = {274-301},
     6170}
     6171
     6172@mastersthesis{Fortier89,
     6173    keywords    = {monitors},
     6174    contributer = {pabuhr@plg},
     6175    author      = {Michel Fortier},
     6176    title       = {Study of Monitors},
     6177    school      = {Department of Computer Science, University of Waterloo},
     6178    year        = 1989,
     6179    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     6180}
     6181
     6182@techreport{AmadioCardelli,
     6183    keywords    = {},
     6184    contributer = {gjditchfield@plg},
     6185    author      = {Roberto M. Amadio and Luca Cardelli},
     6186    title       = {Subtyping Recursive Types},
     6187    institution = {Digital Equipment Corporation Systems Research Center},
     6188    year        = 1990,
     6189    address     = {130 Lytton Avenue, Palo Alto, California 94301},
     6190    month       = aug,
     6191    number      = 62,
     6192    summary     = {
     6193        \[ (s \leq t \Rightarrow \alpha \leq \beta) \Rightarrow
     6194               \mu s.\alpha leq \mu t.\beta  \]
     6195        \[ \alpha = C[\alpha] \and \beta = C[\beta] \and C contractive
     6196               \Rightarrow \alpha = \beta \]
     6197        where a type \(\alpha\) is contractive in the type variable \(t\)
     6198        if either \(t\) does not occur free in \(\alpha\), or \(\alpha\)
     6199        can be rewritten via unfolding as a type of the shape
     6200        \(\alpha_1 \rightarrow \alpha_2\), and unfolding rewrites
     6201        \(\mu t.\alpha\) as \([t\leftarrow\mu t.\alpha]\alpha\).  An
     6202        algorithm for finding type contexts \(C\) is given.
     6203    }
     6204}
     6205
     6206@techreport{Dijkstra80,
     6207    keywords    = {split binary semaphores, general to binary},
     6208    contributer = {pabuhr@plg},
     6209    author      = {Edsger W. Dijkstra},
     6210    title       = {The Superfluity of the General Semaphore},
     6211    institution = {Nuenen},
     6212    address     = {Netherlands},
     6213    number      = {EWD734},
     6214    month       = apr,
     6215    year        = 1980,
     6216}
     6217
     6218@inproceedings{Burns81,
     6219    keywords    = {N-thread software-solution mutual exclusion},
     6220    contributer = {pabuhr@plg},
     6221    author      = {James E. Burns},
     6222    title       = {Symmetry in Systems of Asynchronous Processes},
     6223    booktitle   = {22nd Annual Symposium on Foundations of Computer Science, Nashville, TN, USA},
     6224    year        = 1981,
     6225    month       = oct,
     6226    organization= {IEEE Computer Society},
     6227    address     = {Los Angeles, CA, USA},
     6228    pages       = {169-174},
     6229}
     6230
     6231@article{Coffman71,
     6232    keywords    = {deadlock},
     6233    contributer = {pabuhr@plg},
     6234    author      = {E. G. {Coffman, Jr.} and M. J. Elphick and A. Shoshani},
     6235    title       = {System Deadlocks},
     6236    journal     = acmcs,
     6237    volume      = 3,
     6238    number      = 2,
     6239    month       = jun,
     6240    year        = 1971,
     6241    pages       = {67-78},
     6242    publisher   = {ACM Press},
     6243    address     = {New York, NY, USA},
     6244    doi         = {http://doi.acm.org/10.1145/356586.356588},
     6245}
     6246
     6247@phdthesis{Holmes99,
     6248    keywords    = {synchronization, inheritance anomaly},
     6249    contributer = {pabuhr@plg},
     6250    author      = {David Holmes},
     6251    title       = {Synchronisation Rings: Composable Synchronisation for Object-Oriented Systems},
     6252    school      = {Department of Computing, Macquarie University},
     6253    month       = oct,
     6254    year        = 1999,
     6255    address     = {Sydney, Australia},
     6256}
     6257
     6258@book{Taubenfeld06,
     6259    keywords    = {concurrency, synchronization},
     6260    author      = {Gadi Taubenfeld},
     6261    title       = {Synchronization Algorithms and Concurrent Programming},
     6262    publisher   = {Pearson/Prentice Hall},
     6263    year        = 2006,
     6264}
     6265
     6266@article{Buhr92b,
     6267    keywords    = {concurrency, exception handling, interventions},
     6268    contributer = {pabuhr@plg},
     6269    author      = {Peter A. Buhr and Hamish I. Macdonald and C. Robert Zarnke},
     6270    title       = {Synchronous and Asynchronous Handling of Abnormal Events in the $\mu${S}ystem},
     6271    journal     = spe,
     6272    volume      = 22,
     6273    number      = 9,
     6274    month       = sep,
     6275    year        = 1992,
     6276    pages       = {735-776},
     6277}
     6278
     6279@inproceedings{Greenwald96,
     6280    keywords    = {compare and swap, hardware atomicity},
     6281    contributer = {pabuhr@plg},
     6282    author      = {Michael Greenwald and David Cheriton},
     6283    title       = {The Synergy between Non-blocking Synchronization and Operating System Structure},
     6284    booktitle   = {Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation},
     6285    organization= {USENIX Association},
     6286    address     = {Seattle, Washington, U.S.A.},
     6287    month       = oct,
     6288    year        = 1996,
     6289    pages       = {123-136},
     6290}
     6291
     6292@inbook{SunLWP,
     6293    keywords    = {light-weight processes, threads},
     6294    contributer = {pabuhr@plg},
     6295    key         = {Sun},
     6296    title       = {System Services Overview, Lightweight Processes},
     6297    chapter     = {6},
     6298    pages       = {71-111},
     6299    publisher   = {Sun Microsystems},
     6300    month       = may,
     6301    year        = 1988,
     6302    note        = {available as Part Number: 800-1753-10},
     6303}
     6304
     6305@article{Randell75,
     6306    contributer = {pabuhr@plg},
     6307    author      = {Brian Randell},
     6308    title       = {System Structure for Software Fault Tolerance},
     6309    journal     = ieeese,
     6310    volume      = {SE-1},
     6311    number      = 2,
     6312    month       = jun,
     6313    year        = 1975,
     6314    pages       = {220-232},
     6315}
     6316
     6317@book{Modula-3,
     6318    keywords    = {language reference manual},
     6319    contributer = {pabuhr@plg},
     6320    author      = {Andrew Birrell and Mark R. Brown and Luca Cardelli and Jim Donahue and Lucille Glassman and John Gutag and Jim Harning and Bill Kalsow and Roy Levin and Greg Nelson},
     6321    title       = {Systems Programming with Modula-3},
     6322    publisher   = {Prentice-Hall, Inc.},
     6323    year        = 1991,
     6324    series      = {Prentice Hall Series in Innovative Technology}
     6325}
     6326
     6327% T
     6328
     6329@article{Yeager91,
     6330    keywords    = {teaching, concurrency},
     6331    contributer = {pabuhr@plg},
     6332    author      = {Dorian P. Yeager},
     6333    title       = {Teaching Concurrency in the Programming Languages Course},
     6334    journal     = {SIGCSE BULLETIN},
     6335    volume      = 23,
     6336    number      = 1,
     6337    month       = mar,
     6338    year        = 1991,
     6339    pages       = {155-161},
     6340    note        = {The Papers of the Twenty-Second SIGCSE Technical Symposium on Computer Science Education,
     6341                   March. 7--8, 1991, San Antonio, Texas, U.S.A.},
     6342}
     6343
     6344@article{ml,
     6345    keywords    = {ML, polymorphism},
     6346    contributer = {gjditchfield@plg},
     6347    author      = {Robin Milner},
     6348    title       = {A Theory of Type Polymorphism in Programming},
     6349    journal     = jcss,
     6350    year        = 1978,
     6351    volume      = 17, pages = {348-375}
     6352}
     6353
     6354@book{Thoth,
     6355    keywords    = {messages, concurrency},
     6356    contributer = {pabuhr@plg},
     6357    author      = {D. R. Cheriton},
     6358    title       = {The Thoth System: Multi-Process Structuring and Portability},
     6359    publisher   = {American Elsevier},
     6360    year        = 1982
     6361}
     6362
     6363@article{Boehm05,
     6364    keywords    = {concurrency, C++},
     6365    contributer = {pabuhr@plg},
     6366    author      = {Hans-J. Boehm},
     6367    title       = {Threads Cannot be Implemented as a Library},
     6368    journal     = sigplan,
     6369    volume      = 40,
     6370    number      = 6,
     6371    month       = jun,
     6372    year        = 2005,
     6373    pages       = {261-268},
     6374}
     6375
     6376@misc{Bumbulis90,
     6377    keywords    = {parameter inference, ForceN},
     6378    contributer = {gjditchfield@plg},
     6379    author      = {Peter Bumbulis},
     6380    title       = {Towards Making Signatures First-Class},
     6381    howpublished= {personal communication},
     6382    month       = sep, year = 1990,
     6383    note        = {}
     6384}
     6385
     6386@techreport{alphard:preempt,
     6387    keywords    = {},
     6388    contributer = {gjditchfield@plg},
     6389    author      = {Mary Shaw and Wm. A. Wulf},
     6390    title       = {Toward Relaxing Assumptions in Languages and Their Implementations},
     6391    institution = {Carnegie-Mellon University},
     6392    year        = 1980,
     6393    month       = jan,
     6394    note        = {Reprinted in \cite{alphard}.}
     6395}
     6396
     6397@inproceedings{Reynolds74,
     6398    keywords    = {universal quantification, typed lambda calculus},
     6399    contributer = {gjditchfield@plg},
     6400    author      = {John C. Reynolds},
     6401    title       = {Towards a Theory of Type Structure},
     6402    booktitle   = {Colloque sur la Programmation},
     6403    year        = 1974,
     6404    pages       = {408-423},
     6405    editor      = {B. Robinet},
     6406    publisher   = {Springer-Verlag},
     6407    note        = {Lecture Notes in Computer Science, v. 19},
     6408    abstract    = {
     6409       
     6410    }
     6411}
     6412
     6413@incollection{Hoare72,
     6414    keywords    = {critical region, concurrency},
     6415    contributer = {pabuhr@plg},
     6416    author      = {C. A. R. Hoare},
     6417    title       = {Towards a Theory of Parallel Programming},
     6418    booktitle   = {Operating Systems Techniques},
     6419    editor      = {C. A. R. Hoare and R. H. Perott},
     6420    publisher   = {Academic Press, New York},
     6421    year        = 1972,
     6422    pages       = {61-71},
     6423}
     6424
     6425@inproceedings{Mitchell90,
     6426    keywords    = {polymorphism, lambda calculus, bounded quantification},
     6427    contributer = {gjditchfield@plg},
     6428    author      = {John C. Mitchell},
     6429    title       = {Toward a Typed Foundation for Method Specialization and Inheritance},
     6430    booktitle   = {Conference Record of the Seventeenth Annual ACM Symposium
     6431        on Principles of Programming Languages},
     6432    year        = 1990,
     6433    month       = jan, pages = {109-124},
     6434    organization= {Association for Computing Machinery},
     6435    abstract    = {
     6436        This paper disucsses the phenomenon of {\em method specialization}
     6437        in object-oriented programming languages.  A typed function
     6438        calculus of objects and classes is presented, featuring method
     6439        specialization when methods are added or redefined.  The soundness
     6440        of the typing rules (without subtyping) is suggested by a
     6441        translation into a more traditional calculus with
     6442        recursively-defined record types.  However, semantic questions
     6443        regarding the subtype relation on classes remain open.
     6444    }
     6445}
     6446
     6447@article{EL1,
     6448    keywords    = {polymorphism},
     6449    contributer = {pabuhr@plg},
     6450    author      = {B. Wegbreit},
     6451    title       = {The Treatment of Data Types in {EL1}},
     6452    journal     = cacm,
     6453    volume      = 17,
     6454    number      = 5,
     6455    month       = may,
     6456    year        = 1974,
     6457    pages       = {251-264},
     6458}
     6459
     6460@mastersthesis{Till89,
     6461    keywords    = {C, multiple return values, tuples},
     6462    contributer = {pabuhr@plg},
     6463    author      = {David W. Till},
     6464    title       = {Tuples In Imperative Programming Languages},
     6465    school      = {Department of Computer Science, University of Waterloo},
     6466    year        = 1989,
     6467    address     = {Waterloo, Ontario, Canada, N2L 3G1},
     6468}
     6469
     6470@article{turing:old,
     6471    keywords    = {verification, context conditions, faithful execution},
     6472    contributer = {gjditchfield@plg},
     6473    author      = {R. C. Holt and J. R. Cordy},
     6474    title       = {The Turing Programming Language},
     6475    journal     = cacm,
     6476    year        = 1988,
     6477    month       = dec,
     6478    volume      = 31, number = 12, pages = {1410-1423}
     6479}
     6480
     6481@book{Turing,
     6482    keywords    = {verification, context conditions, faithful execution},
     6483    contributer = {pabuhr@plg},
     6484    author      = {R. C. Holt},
     6485    title       = {Turing Reference Manual},
     6486    publisher   = {Holt Software Associates Inc.},
     6487    year        = 1992,
     6488    edition     = {third},
     6489}
     6490
     6491@techreport{Dijkstra79,
     6492    keywords    = {split binary semaphores},
     6493    contributer = {pabuhr@plg},
     6494    author      = {Edsger W. Dijkstra},
     6495    title       = {A Tutorial on the Split Binary Semaphore},
     6496    institution = {Nuenen},
     6497    address     = {Netherlands},
     6498    number      = {EWD703},
     6499    month       = mar,
     6500    year        = 1979,
     6501}
     6502
     6503@book{pldesign,
     6504    keywords    = {},
     6505    editor      = {Anthony I. Wasserman},
     6506    title       = {Tutorial: Programming Language Design},
     6507    publisher   = {Computer Society Press},
     6508    year        = 1980
     6509}
     6510 
     6511@article{Leroy00,
     6512    keywords    = {type-systems, exceptions},
     6513    contributer = {pabuhr@plg},
     6514    author      = {Xavier Leroy and Fran\c{c}ois Pessaux},
     6515    title       = {Type-Based Analysis of Uncaught Exceptions},
     6516    journal     = toplas,
     6517    month       = mar,
     6518    year        = 2000,
     6519    volume      = 22,
     6520    number      = 2,
     6521    pages       = {340-377},
     6522    comment     = {
     6523        Argues against declaring exceptions on routine definitions.
     6524    },
     6525}
     6526
     6527@article{Cormack90,
     6528    keywords    = {polymorphism},
     6529    contributer = {pabuhr@plg},
     6530    author      = {G. V. Cormack and A. K. Wright},
     6531    title       = {Type-dependent Parameter Inference},
     6532    journal     = sigplan,
     6533    volume      = 25,
     6534    number      = 6,
     6535    month       = jun,
     6536    year        = 1990,
     6537    pages       = {127-136},
     6538    note        = {Proceedings of the ACM Sigplan'90 Conference on Programming Language Design and Implementation
     6539                   June 20-22, 1990, White Plains, New York, U.S.A.},
     6540}
     6541
     6542@article{concatenation,
     6543    keywords    = {record concatenation, isa},
     6544    contributer = {gjditchfield@plg},
     6545    author      = {N. Wirth},
     6546    title       = {Type Extensions},
     6547    journal     = toplas,
     6548    volume      = {10},
     6549    number      = {2},
     6550    pages       = {204-214},
     6551    month       = apr, year = 1988,
     6552    comment     = {
     6553        Extended record types add fields to their base record.  Assignment
     6554        truncations.  Pointers can point at extended type instances.  For
     6555        polymorphism, call by value is assignment, and call by reference is
     6556        pointer passing.  Overloading isn't discussed.  Type information
     6557        can be recovered through an ``is'' type test or through type guards
     6558        (casts).  A version of the WITH statement could avoid repeated
     6559        checking.
     6560
     6561        Private/public access to record fields can be provided by exporting
     6562        a base type, and using a private extension. Statically allocated
     6563        instances need a compiler hint specifying the maximum size of the
     6564        private type.
     6565
     6566        Type checking is cheap (if the creation of pointer values is
     6567        controlled).  Types have type descriptors.  Extension descriptors
     6568        point at their direct base.  Heap objects point at their
     6569        descriptor, and reference parameters are accompanied by type
     6570        descriptor parameters.  ``v is t0'' loops along the chain of
     6571        descriptors.
     6572    }
     6573}
     6574
     6575% U
     6576
     6577@unpublished{uC++book,
     6578    keywords    = {control structure, concurrency},
     6579    contributer = {pabuhr@plg},
     6580    author      = {Peter A. Buhr},
     6581    title       = {Understanding Control Flow with Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
     6582    year        = 1999,
     6583    note        = {Textbook in preparation}
     6584}
     6585
     6586@article{Cardelli85,
     6587    keywords    = {polymorphism},
     6588    contributer = {pabuhr@plg},
     6589    author      = {Luca Cardelli and Peter Wegner},
     6590    title       = {On Understanding Types, Data Abstractions, and Polymorphism},
     6591    journal     = acmcs,
     6592    month       = dec,
     6593    year        = 1985,
     6594    volume      = 17,
     6595    number      = 4,
     6596    pages       = {471-522},
     6597}
     6598
     6599@inproceedings{Wilson92,
     6600    keywords    = {garbage collection survey},
     6601    contributer = {pabuhr@plg},
     6602    author      = {Paul R. Wilson},
     6603    title       = {Uniprocessor Garbage Collection Techniques},
     6604    booktitle   = {Proceedings of the International Workshop on Memory Management},
     6605    location    = {St. Malo, France},
     6606    publisher   = {Springer-Verlag},
     6607    series      = {Lecture Notes in Computer Science},
     6608    volume      = 637,
     6609    month       = sep,
     6610    year        = {1992},
     6611    pages       = {1-42},
     6612}
     6613
     6614@inproceedings{Hewitt73,
     6615    author      = {Carl Hewitt and Peter Bishop and Richard Steiger},
     6616    title       = {A Universal Modular {ACTOR} Formalism for Artificial Intelligence},
     6617    booktitle   = {Proceedings of the 3rd International Joint Conference on Artificial Intelligence},
     6618    address     = {Standford, California, U.S.A.},
     6619    pages       = {235-245},
     6620    month       = aug,
     6621    year        = 1973,
     6622}
     6623
     6624@article{Bourne78,
     6625    keywords    = {Shell},
     6626    contributer = {pabuhr@plg},
     6627    author      = {S. R. Bourne},
     6628    title       = {The UNIX Shell},
     6629    journal     = {The Bell System Technical Journal},
     6630    volume      = {57, part 2},
     6631    month       = {July--August},
     6632    year        = 1978,
     6633    pages       = {1971-1990},
     6634}
     6635
     6636@inproceedings{Krischer12,
     6637    keywords    = {exception, usability, asynchronous, assertion, injection, logging},
     6638    contributer = {pabuhr@plg},
     6639    author      = {Roy Krischer and Peter A. Buhr},
     6640    title       = {Usability Challenges in Exception Handling},
     6641    booktitle   = {5th International Workshop on Exception Handling (WEH)},
     6642    organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
     6643    address     = {Zurich, Switzerland},
     6644    month       = jun,
     6645    year        = 2012,
     6646    pages       = {7-13},
     6647}
     6648
     6649@techreport{Harmony,
     6650    keywords    = {messages, concurrency},
     6651    contributer = {pabuhr@plg},
     6652    author      = {W. Morven Gentleman},
     6653    title       = {Using the Harmony Operating System},
     6654    institution = {National Research Council of Canada, Ottawa, Canada},
     6655    number      = {24685},
     6656    month       = may,
     6657    year        = 1985
     6658}
     6659
     6660@article{delegation,
     6661    keywords    = {delegation, inheritance, actors},
     6662    contributer = {gjditchfield@plg},
     6663    author      = {Henry Lieverman},
     6664    title       = {Using Prototypical Objects to Implement Shared Behavior in
     6665                  Object Oriented Systems},
     6666    journal     = sigplan,
     6667    month       = nov, year = 1986,
     6668    volume      = 21, number = 11, pages = {214-223}
     6669}
     6670
     6671% V
     6672
     6673@article{V-Kernel,
     6674    keywords    = {messages, concurrency},
     6675    contributer = {pabuhr@plg},
     6676    author      = {David R. Cheriton},
     6677    title       = {The {V} Distributed System},
     6678    journal     = cacm,
     6679    month       = mar,
     6680    year        = 1988,
     6681    volume      = 31,
     6682    number      = 3,
     6683    pages       = {314-333}
     6684}
     6685
     6686@inproceedings{Amdahl67,
     6687    author      = {Gene M. Amdahl},
     6688    title       = {Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities},
     6689    booktitle   = {Proceedings of the April 18-20, 1967, Spring Joint Computer Conference},
     6690    series      = {AFIPS '67 (Spring)},
     6691    year        = 1967,
     6692    location    = {Atlantic City, New Jersey},
     6693    pages       = {483--485},
     6694    publisher   = {ACM},
     6695    address     = {New York, NY, USA},
     6696}
     6697
     6698@article{Mayer81,
     6699    keywords    = {},
     6700    contributer = {pabuhr@plg},
     6701    author      = {A. J. W. Mayer},
     6702    title       = {Value Receiving Procedures},
     6703    journal     = sigplan,
     6704    volume      = 16,
     6705    number      = 11,
     6706    month       = nov,
     6707    year        = 1981,
     6708    pages       = {30-34},
     6709}
     6710
     6711@article{Doran80,
     6712    keywords    = {concurrency, Dekker's Algorithm},
     6713    contributer = {pabuhr@plg},
     6714    author      = {R. W. Doran and L. K. Thomas},
     6715    title       = {Variants of the Software Solution to Mutual Exclusion},
     6716    journal     = ipl,
     6717    month       = jul,
     6718    year        = 1980,
     6719    volume      = 10,
     6720    number      = {4/5},
     6721    pages       = {206-208},
     6722}
     6723
     6724@book{VAX,
     6725    keywords    = {VAX, DEC},
     6726    contributer = {pabuhr@plg},
     6727    key         = {VAX},
     6728    title       = {VAX-11 Architecture Reference Manual},
     6729    publisher   = {Digital Press},
     6730    month       = may,
     6731    year        = 1982,
     6732}
     6733
     6734@book{Kenah88,
     6735    author      = {Lawrence J. Kenah and Ruth E. Goldenberg and Simon F. Bate},
     6736    title       = {{VAX/VMS} Internals and Data Structures Version 4.4},
     6737    publisher   = {Digital Press},
     6738    year        = 1988,
     6739}
     6740
     6741@article{Hesselink13,
     6742    keywords    = {software solutions, N-thread, mutual exclusions},
     6743    contributer = {pabuhr@plg},
     6744    author      = {Wim H. Hesselink},
     6745    title       = {Verifying a Simplification of Mutual Exclusion by {L}ycklama--{H}adzilacos},
     6746    journal     = {Acta Informatica},
     6747    publisher   = {Springer-Verlag},
     6748    year        = {2013},
     6749    volume      = {50},
     6750    number      = {3},
     6751    pages       = {199-228},
     6752}
     6753
     6754% W
     6755
     6756@article{Herlihy91,
     6757    keywords    = {linearization, wait-free synchronization},
     6758    contributer = {pabuhr@plg},
     6759    author      = {Maurice Herlihy},
     6760    title       = {Wait-free Synchronization},
     6761    journal     = toplas,
     6762    volume      = {13},
     6763    number      = {1},
     6764    month       = jan,
     6765    year        = 1991,
     6766    pages       = {124--149},
     6767    numpages    = {26},
     6768    publisher   = {ACM},
     6769    address     = {New York, NY, USA},
     6770}
     6771
     6772@techreport{Moss90,
     6773    keywords    = {Swizzling, database},
     6774    contributer = {akgoel@plg},
     6775    author      = {J. Moss},
     6776    title       = {Working with Persistent Objects: To Swizzle or Not to Swizzle},
     6777    institution = {CS Department, University of Massachusetts},
     6778    address     = {},
     6779    number      = {CS 90-38},
     6780    month       = may,
     6781    year        = 1990,
     6782}
     6783
     6784@inproceedings{Str:oop,
     6785    keywords    = { },
     6786    contributer = {pabuhr@plg},
     6787    author      = {Bjarne Stroustrup},
     6788    title       = {What is ``Object-Oriented Programming''?},
     6789    booktitle   = {Proceedings of the First European Conference on Object Oriented Programming},
     6790    month       = jun,
     6791    year        = 1987
     6792}
     6793
     6794@misc{Stroustrup:overloading,
     6795    keywords    = {operator overloading},
     6796    contributer = {pabuhr@plg},
     6797    author      = {Bjarne Stroustrup},
     6798    title       = {Why can't I overload dot, ::, sizeof, etc.?},
     6799    month       = oct,
     6800    year        = 2007,
     6801    howpublished= {{\small\textsf{http://\-www.research.att.com/\-bs/\-bs\_faq2.html\-\#overload-dot}}},
     6802}
     6803
     6804@techreport{Gray85,
     6805    keywords    = {fault-tolerant system},
     6806    contributer = {pabuhr@plg},
     6807    author      = {Jim Gray},
     6808    title       = {Why Do Computers Stop and What Can Be Done About It?},
     6809    institution = {Tandem Computers},
     6810    number      = {85.7 PN87614},
     6811    month       = jun,
     6812    year        = 1985,
     6813    note        = {\textsf{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
     6814}
     6815
     6816% X
     6817
     6818% Y
     6819
     6820% Z
     6821
     6822% Cross-referenced entries:
     6823
     6824% O
     6825
     6826% The SIGPLAN Notices issue should be in a note field, but notes are
     6827% inherited by all refering entries, instead of being held in the
     6828% cross-referenced entry.  Putting it in "publisher" is a kludge, but it
     6829% works.
     6830@proceedings{OOPSLA86,
     6831    contributer = {gjditchfield@plg},
     6832    title       = {{OOPSLA} '86 Conference Proceedings},
     6833    booktitle   = {{OOPSLA} '86 Conference Proceedings},
     6834    year        = 1986,
     6835    editor      = {Norman Meyrowitz},
     6836    publisher   = sigplan # " 21(11)",
     6837    organization= {Association for Computing Machinery},
     6838    address     = {Portland, Oregon},
     6839    month       = sep # { 29}
     6840}
     6841
     6842@proceedings{OOPSLA87,
     6843    contributer = {gjditchfield@plg},
     6844    title       = {{OOPSLA} '87 Conference Proceedings},
     6845    booktitle   = {{OOPSLA} '87 Conference Proceedings},
     6846    year        = 1987,
     6847    editor      = {Norman Meyrowitz},
     6848    publisher   = sigplan # " 22(12)",
     6849    organization= {Association for Computing Machinery},
     6850    address     = {Orlando, Florida},
     6851    month       = oct # { 4--8}
     6852}
     6853
     6854@proceedings{OOPSLA88,
     6855    contributer = {gjditchfield@plg},
     6856    title       = {{OOPSLA} '88 Conference Proceedings},
     6857    booktitle   = {{OOPSLA} '88 Conference Proceedings},
     6858    year        = 1988,
     6859    editor      = {Norman Meyrowitz},
     6860    publisher   = sigplan # " 23(11)",
     6861    organization= {Association for Computing Machinery},
     6862    address     = {San Diego, California},
     6863    month       = sep # { 25--30}
     6864}
     6865
     6866@proceedings{OOPSLA89,
     6867    contributer = {gjditchfield@plg},
     6868    title       = {{OOPSLA} '89 Conference Proceedings},
     6869    booktitle   = {{OOPSLA} '89 Conference Proceedings},
     6870    year        = 1989,
     6871    editor      = {Norman Meyrowitz},
     6872    publisher   = sigplan # " 24(10)",
     6873    organization= {Association for Computing Machinery},
     6874    address     = {New Orleans, Louisiana},
     6875    month       = oct # { 1--6}
     6876}
     6877
     6878@proceedings{OOPSLA90,
     6879    contributer = {gjditchfield@plg},
     6880    title       = {{OOPSLA/ECOOP} '90 Conference Proceedings},
     6881    booktitle   = {{OOPSLA} '90 Conference Proceedings},
     6882    year        = 1990,
     6883    editor      = {Norman Meyrowitz},
     6884    publisher   = sigplan # " 25(10)",
     6885    organization= {Association for Computing Machinery},
     6886    address     = {Ottawa, Canada},
     6887    month       = oct # { 21--25}
     6888}
     6889
     6890@proceedings{OOPSLA91,
     6891    contributer = {gjditchfield@plg},
     6892    title       = {{OOPSLA} '91 Conference Proceedings},
     6893    booktitle   = {{OOPSLA} '91 Conference Proceedings},
     6894    year        = 1991,
     6895    editor      = {Andreas Paepcke},
     6896    publisher   = sigplan # " 26(11)",
     6897    organization= {Association for Computing Machinery},
     6898    address     = {Phoenix, Arizona},
     6899    month       = oct # { 6--11}
     6900}
  • doc/refrat/Makefile

    r1b5c81ed rf80e0218  
    11## Define the appropriate configuration variables.
    22
    3 TeXLIB = .:../bibliography/:../LaTeXmacros/:
    4 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex
     3TeXLIB = .:../LaTeXmacros:../LaTeXmacros/listings:../LaTeXmacros/enumitem:../bibliography/:
     4LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error
    55BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
    66
  • doc/refrat/refrat.tex

    r1b5c81ed rf80e0218  
    1111%% Created On       : Wed Apr  6 14:52:25 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Sat Apr  9 10:19:12 2016
    14 %% Update Count     : 8
     13%% Last Modified On : Sat Jun 18 19:21:30 2016
     14%% Update Count     : 74
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
    1717% requires tex packages: texlive-base texlive-latex-base tex-common texlive-humanities texlive-latex-extra texlive-fonts-recommended
     18
     19% inline code ©...© (copyright symbol) emacs: C-q M-)
     20% red highlighting ®...® (registered trademark symbol) emacs: C-q M-.
     21% blue highlighting ß...ß (sharp s symbol) emacs: C-q M-_
     22% green highlighting ¢...¢ (cent symbol) emacs: C-q M-"
     23% LaTex escape §...§ (section symbol) emacs: C-q M-'
     24% keyword escape ¶...¶ (pilcrow symbol) emacs: C-q M-^
     25% math escape $...$ (dollar symbol)
    1826
    1927\documentclass[openright,twoside]{report}
     
    2129
    2230% Latex packages used in the document.
    23 \usepackage{fullpage,times}
     31\usepackage[T1]{fontenc}                                % allow Latin1 (extended ASCII) characters
     32\usepackage{textcomp}
     33\usepackage[latin1]{inputenc}
     34\usepackage{fullpage,times,comment}
     35\usepackage{epic,eepic}
     36\usepackage{upquote}                                                                    % switch curled `'" to straight
    2437\usepackage{xspace}
    25 \usepackage{varioref}
    26 \usepackage{listings}
    27 \usepackage{comment}
    28 \usepackage{latexsym}                                   % \Box
     38\usepackage{varioref}                                                                   % extended references
     39\usepackage{listings}                                                                   % format program code
     40\usepackage[flushmargin]{footmisc}                                              % support label/reference in footnote
     41\usepackage{latexsym}                                   % \Box glyph
    2942\usepackage{mathptmx}                                   % better math font with "times"
     43\usepackage[usenames]{color}
    3044\usepackage[pagewise]{lineno}
    3145\renewcommand{\linenumberfont}{\scriptsize\sffamily}
     46\input{common}                                          % bespoke macros used in the document
    3247\usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}
    3348\usepackage{breakurl}
     
    3651%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3752
    38 % Bespoke macros used in the document.
    39 \input{common}
     53% Names used in the document.
     54
     55\newcommand{\Version}{1.0.0}
     56
     57\newcommand{\Textbf}[2][red]{{\color{#1}{\textbf{#2}}}}
     58\newcommand{\Emph}[2][red]{{\color{#1}\textbf{\emph{#2}}}}
     59\newcommand{\R}[1]{\Textbf{#1}}
     60\newcommand{\B}[1]{{\Textbf[blue]{#1}}}
     61\newcommand{\G}[1]{{\Textbf[OliveGreen]{#1}}}
    4062
    4163%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    5981}% author
    6082\date{
    61 DRAFT\\\today
     83DRAFT \\
     84\today
    6285}% date
    6386
     
    123146\subsection{Scopes of identifiers}\index{scopes}
    124147
    125 \CFA's scope rules differ from C's in one major respect: a declaration of an identifier may overload\index{overloading} outer declarations of lexically identical identifiers in the same
    126 \Index{name space}, instead of hiding them.
    127 The outer declaration is hidden if the two declarations have \Index{compatible type}, or if one declares an array type and the other declares a pointer type and the element type and pointed-at type are compatible, or if one has function type and the other is a pointer to a compatible function type, or if one declaration is a \lstinline$type$\use{type} or
    128 \lstinline$typedef$\use{typedef} declaration and the other is not.  The outer declaration becomes
    129 \Index{visible} when the scope of the inner declaration terminates.
    130 \begin{rationale}
    131 Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same scope;
     148\CFA's scope rules differ from C's in one major respect: a declaration of an identifier may overload\index{overloading} outer declarations of lexically identical identifiers in the same \Index{name space}, instead of hiding them.
     149The outer declaration is hidden if the two declarations have \Index{compatible type}, or if one declares an array type and the other declares a pointer type and the element type and pointed-at type are compatible, or if one has function type and the other is a pointer to a compatible function type, or if one declaration is a ©type©\use{type} or ©typedef©\use{typedef} declaration and the other is not.
     150The outer declaration becomes \Index{visible} when the scope of the inner declaration terminates.
     151\begin{rationale}
     152Hence, a \CFA program can declare an ©int v© and a ©float v© in the same scope;
    132153a {\CC} program can not.
    133154\end{rationale}
     
    138159
    139160\CFA's linkage rules differ from C's in only one respect: instances of a particular identifier with external or internal linkage do not necessarily denote the same object or function.
    140 Instead, in the set of translation units and libraries that constitutes an entire program, any two instances of a particular identifier with \Index{external linkage} denote the same object or function if they have
    141 \Index{compatible type}s, or if one declares an array type and the other declares a pointer type and the element type and pointed-at type are compatible, or if one has function type and the other is a pointer to a compatible function type.
     161Instead, in the set of translation units and libraries that constitutes an entire program, any two instances of a particular identifier with \Index{external linkage} denote the same object or function if they have \Index{compatible type}s, or if one declares an array type and the other declares a pointer type and the element type and pointed-at type are compatible, or if one has function type and the other is a pointer to a compatible function type.
    142162Within one translation unit, each instance of an identifier with \Index{internal linkage} denotes the same object or function in the same circumstances.
    143163Identifiers with \Index{no linkage} always denote unique entities.
    144164\begin{rationale}
    145 A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$;
     165A \CFA program can declare an ©extern int v© and an ©extern float v©;
    146166a C program cannot.
    147167\end{rationale}
     
    166186\end{lstlisting}
    167187
    168 The type parameters in an instantiation of a generic type must satisfy any constraints in the forall specifier on the type generator declaration, e.g., \lstinline$sumable$.
     188The type parameters in an instantiation of a generic type must satisfy any constraints in the forall specifier on the type generator declaration, e.g., ©sumable©.
    169189The instantiation then has the semantics that would result if the type parameters were substituted into the type generator declaration by macro substitution.
    170190
     
    214234\CFA defines situations where values of one type are automatically converted to another type.
    215235These conversions are called \define{implicit conversion}s.
    216 The programmer can request
    217 \define{explicit conversion}s using cast expressions.
     236The programmer can request \define{explicit conversion}s using cast expressions.
    218237
    219238
     
    227246In \CFA, these conversions play a role in overload resolution, and collectively are called the \define{safe arithmetic conversion}s.
    228247
    229 Let \(int_r\) and \(unsigned_r\) be the signed and unsigned integer types with integer conversion rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$.
    230 Let \(unsigned_{mr}\) be the unsigned integer type with maximal rank.
     248Let ©int$_r$© and ©unsigned$_r$© be the signed and unsigned integer types with integer conversion rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$.
     249Let ©unsigned$_{mr}$© be the unsigned integer type with maximal rank.
    231250
    232251The following conversions are \emph{direct} safe arithmetic conversions.
     
    235254The \Index{integer promotion}s.
    236255\item
    237 For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\) to \(unsigned_r\).
    238 \item
    239 For every rank $r$ greater than or equal to the rank of \lstinline$int$, where \(int_{r+1}\) exists and can represent all values of \(unsigned_r\), conversion from \(unsigned_r\) to \(int_{r+1}\).
    240 \item
    241 Conversion from \(unsigned_{mr}\) to \lstinline$float$.
     256For every rank $r$ greater than or equal to the rank of ©int©, conversion from ©int$_r$© to ©unsigned$_r$©.
     257\item
     258For every rank $r$ greater than or equal to the rank of ©int©, where ©int$_{r+1}$© exists and can represent all values of ©unsigned$_r$©, conversion from ©unsigned$_r$© to ©int$_{r+1}$©.
     259\item
     260Conversion from ©unsigned$_{mr}$© to ©float©.
    242261\item
    243262Conversion from an enumerated type to its compatible integer type.
    244263\item
    245 Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to \lstinline$long double$.
    246 \item
    247 Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$, and from \lstinline$double _Complex$ to \lstinline$long double _Complex$.
     264Conversion from ©float© to ©double©, and from ©double© to ©long double©.
     265\item
     266Conversion from ©float _Complex© to ©double _Complex©, and from ©double _Complex© to ©long double _Complex©.
    248267\begin{sloppypar}
    249268\item
    250 Conversion from \lstinline$float _Imaginary$ to \lstinline$double _Imaginary$, and from \lstinline$double _Imaginary$ to \lstinline$long double$ \lstinline$_Imaginary$, if the implementation supports imaginary types.
     269Conversion from ©float _Imaginary© to ©double _Imaginary©, and from ©double _Imaginary© to ©long double _Imaginary©, if the implementation supports imaginary types.
    251270\end{sloppypar}
    252271\end{itemize}
    253272
    254 If type \lstinline$T$ can be converted to type \lstinline$U$ by a safe direct arithmetic conversion and type \lstinline$U$ can be converted to type \lstinline$V$ by a safe arithmetic conversion, then the conversion from \lstinline$T$ to type \lstinline$V$ is an \emph{indirect} safe arithmetic conversion.
     273If type ©T© can be converted to type ©U© by a safe direct arithmetic conversion and type ©U© can be converted to type ©V© by a safe arithmetic conversion, then the conversion from ©T© to type ©V© is an \emph{indirect} safe arithmetic conversion.
    255274
    256275\begin{rationale}
     
    266285\label{anon-conv}
    267286
    268 If an expression's type is a pointer to a structure or union type that has a member that is an
    269 \Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's type.
     287If an expression's type is a pointer to a structure or union type that has a member that is an \Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's type.
    270288The result of the conversion is a pointer to the member.
    271289
     
    275293        int x, y;
    276294};
    277 void move_by( struct point * p1, struct point * p2 ) {@\impl{move_by}@
     295void move_by( struct point * p1, struct point * p2 ) {§\impl{move_by}§
    278296        p1->x += p2.x;
    279297        p1->y += p2.y;
     
    285303move_to( &cp1, &cp2 );
    286304\end{lstlisting}
    287 Thanks to implicit conversion, the two arguments that \lstinline$move_by()$ receives are pointers to
    288 \lstinline$cp1$'s second member and \lstinline$cp2$'s second member.
     305Thanks to implicit conversion, the two arguments that ©move_by()© receives are pointers to ©cp1©'s second member and ©cp2©'s second member.
    289306
    290307
     
    328345a direct safe arithmetic conversion;
    329346\item
    330 from any object type or incomplete type to \lstinline$void$;
    331 \item
    332 from a pointer to any non-\lstinline$void$ type to a pointer to \lstinline$void$;
     347from any object type or incomplete type to ©void©;
     348\item
     349from a pointer to any non-©void© type to a pointer to ©void©;
    333350\item
    334351from a pointer to any type to a pointer to a more qualified version of the type\index{qualified type};
     
    341358Conversions that are not safe conversions are \define{unsafe conversion}s.
    342359\begin{rationale}
    343 As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type.
     360As in C, there is an implicit conversion from ©void *© to any pointer type.
    344361This is clearly dangerous, and {\CC} does not have this implicit conversion.
    345362\CFA\index{deficiencies!void * conversion} keeps it, in the interest of remaining as pure a superset of C as possible, but discourages it by making it unsafe.
     
    367384\begin{itemize}
    368385\item
    369 The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1.
    370 The cost of an implicit conversion from \lstinline$long$ to \lstinline$double$ is 3, because it is defined in terms of conversions from \lstinline$long$ to \lstinline$unsigned long$, then to \lstinline$float$, and then to \lstinline$double$.
    371 
    372 \item
    373 If \lstinline$int$ can represent all the values of \lstinline$unsigned short$, then the cost of an implicit conversion from \lstinline$unsigned short$ to \lstinline$unsigned$ is 2:
    374 \lstinline$unsigned short$ to \lstinline$int$ to \lstinline$unsigned$.
    375 Otherwise, \lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1.
    376 
    377 \item
    378 If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost of \lstinline$unsigned$ to \lstinline$long$ is 1.
     386The cost of an implicit conversion from ©int© to ©long© is 1.
     387The cost of an implicit conversion from ©long© to ©double© is 3, because it is defined in terms of conversions from ©long© to ©unsigned long©, then to ©float©, and then to ©double©.
     388
     389\item
     390If ©int© can represent all the values of ©unsigned short©, then the cost of an implicit conversion from ©unsigned short© to ©unsigned© is 2: ©unsigned short© to ©int© to ©unsigned©.
     391Otherwise, ©unsigned short© is converted directly to ©unsigned©, and the cost is 1.
     392
     393\item
     394If ©long© can represent all the values of ©unsigned©, then the conversion cost of ©unsigned© to ©long© is 1.
    379395Otherwise, the conversion is an unsafe conversion, and its conversion cost is undefined.
    380396\end{itemize}
    381397
     398
    382399\section{Lexical elements}
     400
     401
    383402\subsection{Keywords}
     403
    384404\begin{syntax}
    385405\oldlhs{keyword}
    386         \rhs \lstinline$forall$
    387         \rhs \lstinline$lvalue$
    388         \rhs \lstinline$trait$
    389         \rhs \lstinline$dtype$
    390         \rhs \lstinline$ftype$
    391         \rhs \lstinline$type$
     406\rhs ©forall©
     407\rhs ©lvalue©
     408\rhs ©trait©
     409\rhs ©dtype©
     410\rhs ©ftype©
     411\rhs ©otype©
    392412\end{syntax}
    393413
     
    396416
    397417\CFA allows operator \Index{overloading} by associating operators with special function identifiers.
    398 Furthermore, the constants ``\lstinline$0$'' and ``\lstinline$1$'' have special status for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them as overloadable identifiers.
     418Furthermore, the constants ``©0©'' and ``©1©'' have special status for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them as overloadable identifiers.
    399419Programmers can use these identifiers to declare functions and objects that implement operators and constants for their own types.
    400420
     
    405425\begin{syntax}
    406426\oldlhs{identifier}
    407 \rhs \lstinline$0$
    408 \rhs \lstinline$1$
     427\rhs ©0©
     428\rhs ©1©
    409429\end{syntax}
    410430
    411 \index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0} and ``\lstinline$1$''\impl{1} are identifiers.
     431\index{constant identifiers}\index{identifiers!for constants} The tokens ``©0©''\impl{0} and ``©1©''\impl{1} are identifiers.
    412432No other tokens defined by the rules for integer constants are considered to be identifiers.
    413433\begin{rationale}
    414 Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C.
     434Why ``©0©'' and ``©1©''? Those integers have special status in C.
    415435All scalar types can be incremented and decremented, which is defined in terms of adding or subtracting 1.
    416 The operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any scalar arguments, and are defined in terms of comparison against 0.
     436The operations ``©&&©'', ``©||©'', and ``©!©'' can be applied to any scalar arguments, and are defined in terms of comparison against 0.
    417437A \nonterm{constant-expression} that evaluates to 0 is effectively compatible with every pointer type.
    418438
    419439In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to any arithmetic type, and the rules for pointer expressions treat constant expressions evaluating to 0 as a special case.
    420440However, user-defined arithmetic types often need the equivalent of a 1 or 0 for their functions or operators, polymorphic functions often need 0 and 1 constants of a type matching their polymorphic parameters, and user-defined pointer-like types may need a null value.
    421 Defining special constants for a user-defined type is more efficient than defining a conversion to the type from \lstinline$_Bool$.
    422 
    423 Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers have special status in C.
    424 A facility that let programmers declare specific constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement.
     441Defining special constants for a user-defined type is more efficient than defining a conversion to the type from ©_Bool©.
     442
     443Why \emph{just} ``©0©'' and ``©1©''? Why not other integers? No other integers have special status in C.
     444A facility that let programmers declare specific constants---``©const Rational 12©'', for instance---would not be much of an improvement.
    425445Some facility for defining the creation of values of programmer-defined types from arbitrary integer tokens would be needed.
    426446The complexity of such a feature doesn't seem worth the gain.
     
    438458\begin{tabular}[t]{ll}
    439459%identifier & operation \\ \hline
    440 \lstinline$?[?]$ & subscripting \impl{?[?]}\\
    441 \lstinline$?()$ & function call \impl{?()}\\
    442 \lstinline$?++$ & postfix increment \impl{?++}\\
    443 \lstinline$?--$ & postfix decrement \impl{?--}\\
    444 \lstinline$++?$ & prefix increment \impl{++?}\\
    445 \lstinline$--?$ & prefix decrement \impl{--?}\\
    446 \lstinline$*?$ & dereference \impl{*?}\\
    447 \lstinline$+?$ & unary plus \impl{+?}\\
    448 \lstinline$-?$ & arithmetic negation \impl{-?}\\
    449 \lstinline$~?$ & bitwise negation \impl{~?}\\
    450 \lstinline$!?$ & logical complement \impl{"!?}\\
    451 \lstinline$?*?$ & multiplication \impl{?*?}\\
    452 \lstinline$?/?$ & division \impl{?/?}\\
     460©?[?]© & subscripting \impl{?[?]}\\
     461©?()© & function call \impl{?()}\\
     462©?++© & postfix increment \impl{?++}\\
     463©?--© & postfix decrement \impl{?--}\\
     464©++?© & prefix increment \impl{++?}\\
     465©--?© & prefix decrement \impl{--?}\\
     466©*?© & dereference \impl{*?}\\
     467©+?© & unary plus \impl{+?}\\
     468©-?© & arithmetic negation \impl{-?}\\
     469©~?© & bitwise negation \impl{~?}\\
     470©!?© & logical complement \impl{"!?}\\
     471©?*?© & multiplication \impl{?*?}\\
     472©?/?© & division \impl{?/?}\\
    453473\end{tabular}\hfil
    454474\begin{tabular}[t]{ll}
    455475%identifier & operation \\ \hline
    456 \lstinline$?%?$ & remainder \impl{?%?}\\
    457 \lstinline$?+?$ & addition \impl{?+?}\\
    458 \lstinline$?-?$ & subtraction \impl{?-?}\\
    459 \lstinline$?<<?$ & left shift \impl{?<<?}\\
    460 \lstinline$?>>?$ & right shift \impl{?>>?}\\
    461 \lstinline$?<?$ & less than \impl{?<?}\\
    462 \lstinline$?<=?$ & less than or equal \impl{?<=?}\\
    463 \lstinline$?>=?$ & greater than or equal \impl{?>=?}\\
    464 \lstinline$?>?$ & greater than \impl{?>?}\\
    465 \lstinline$?==?$ & equality \impl{?==?}\\
    466 \lstinline$?!=?$ & inequality \impl{?"!=?}\\
    467 \lstinline$?&?$ & bitwise AND \impl{?&?}\\
     476©?%?© & remainder \impl{?%?}\\
     477©?+?© & addition \impl{?+?}\\
     478©?-?© & subtraction \impl{?-?}\\
     479©?<<?© & left shift \impl{?<<?}\\
     480©?>>?© & right shift \impl{?>>?}\\
     481©?<?© & less than \impl{?<?}\\
     482©?<=?© & less than or equal \impl{?<=?}\\
     483©?>=?© & greater than or equal \impl{?>=?}\\
     484©?>?© & greater than \impl{?>?}\\
     485©?==?© & equality \impl{?==?}\\
     486©?!=?© & inequality \impl{?"!=?}\\
     487©?&?© & bitwise AND \impl{?&?}\\
    468488\end{tabular}\hfil
    469489\begin{tabular}[t]{ll}
    470490%identifier & operation \\ \hline
    471 \lstinline$?^?$ & exclusive OR \impl{?^?}\\
    472 \lstinline$?|?$ & inclusive OR \impl{?"|?}\\
    473 \lstinline$?=?$ & simple assignment \impl{?=?}\\
    474 \lstinline$?*=?$ & multiplication assignment \impl{?*=?}\\
    475 \lstinline$?/=?$ & division assignment \impl{?/=?}\\
    476 \lstinline$?%=?$ & remainder assignment \impl{?%=?}\\
    477 \lstinline$?+=?$ & addition assignment \impl{?+=?}\\
    478 \lstinline$?-=?$ & subtraction assignment \impl{?-=?}\\
    479 \lstinline$?<<=?$ & left-shift assignment \impl{?<<=?}\\
    480 \lstinline$?>>=?$ & right-shift assignment \impl{?>>=?}\\
    481 \lstinline$?&=?$ & bitwise AND assignment \impl{?&=?}\\
    482 \lstinline$?^=?$ & exclusive OR assignment \impl{?^=?}\\
    483 \lstinline$?|=?$ & inclusive OR assignment \impl{?"|=?}\\
     491©?^?© & exclusive OR \impl{?^?}\\
     492©?|?© & inclusive OR \impl{?"|?}\\
     493©?=?© & simple assignment \impl{?=?}\\
     494©?*=?© & multiplication assignment \impl{?*=?}\\
     495©?/=?© & division assignment \impl{?/=?}\\
     496©?%=?© & remainder assignment \impl{?%=?}\\
     497©?+=?© & addition assignment \impl{?+=?}\\
     498©?-=?© & subtraction assignment \impl{?-=?}\\
     499©?<<=?© & left-shift assignment \impl{?<<=?}\\
     500©?>>=?© & right-shift assignment \impl{?>>=?}\\
     501©?&=?© & bitwise AND assignment \impl{?&=?}\\
     502©?^=?© & exclusive OR assignment \impl{?^=?}\\
     503©?|=?© & inclusive OR assignment \impl{?"|=?}\\
    484504\end{tabular}
    485505\hfil
     
    496516
    497517\begin{rationale}
    498 The use of ``\lstinline$?$'' in identifiers means that some C programs are not \CFA programs.  For instance, the sequence of characters ``\lstinline$(i < 0)?--i:i$'' is legal in a C program, but a
    499 \CFA compiler detects a syntax error because it treats ``\lstinline$?--$'' as an identifier, not as the two tokens ``\lstinline$?$'' and ``\lstinline$--$''.
     518The use of ``©?©'' in identifiers means that some C programs are not \CFA programs.  For instance, the sequence of characters ``©(i < 0)?--i:i©'' is legal in a C program, but a
     519\CFA compiler detects a syntax error because it treats ``©?--©'' as an identifier, not as the two tokens ``©?©'' and ``©--©''.
    500520\end{rationale}
    501521
     
    504524\begin{itemize}
    505525\item
    506 The logical operators ``\lstinline$&&$'' and ``\lstinline$||$'', and the conditional operator
    507 ``\lstinline$?:$''.
     526The logical operators ``©&&©'' and ``©||©'', and the conditional operator ``©?:©''.
    508527These operators do not always evaluate their operands, and hence can not be properly defined by functions unless some mechanism like call-by-name is added to the language.
    509 Note that the definitions of ``\lstinline$&&$'' and ``\lstinline$||$'' say that they work by checking that their arguments are unequal to 0, so defining ``\lstinline$!=$'' and ``\lstinline$0$'' for user-defined types is enough to allow them to be used in logical expressions.
     528Note that the definitions of ``©&&©'' and ``©||©'' say that they work by checking that their arguments are unequal to 0, so defining ``©!=©'' and ``©0©'' for user-defined types is enough to allow them to be used in logical expressions.
    510529
    511530\item
     
    516535\item
    517536The ``address of'' operator.
    518 It would seem useful to define a unary ``\lstinline$&$'' operator that returns values of some programmer-defined pointer-like type.
     537It would seem useful to define a unary ``©&©'' operator that returns values of some programmer-defined pointer-like type.
    519538The problem lies with the type of the operator.
    520 Consider the expression ``\lstinline$p = &x$'', where \lstinline$x$ is of type
    521 \lstinline$T$ and \lstinline$p$ has the programmer-defined type \lstinline$T_ptr$.
    522 The expression might be treated as a call to the unary function ``\lstinline$&?$''.
    523 Now what is the type of the function's parameter? It can not be \lstinline$T$, because then \lstinline$x$ would be passed by value, and there is no way to create a useful pointer-like result from a value.
    524 Hence the parameter must have type \lstinline$T *$.
    525 But then the expression must be rewritten as ``\lstinline$p = &?( &x )$''
     539Consider the expression ``©p = &x©'', where ©x© is of type ©T© and ©p© has the programmer-defined type ©T_ptr©.
     540The expression might be treated as a call to the unary function ``©&?©''.
     541Now what is the type of the function's parameter? It can not be ©T©, because then ©x© would be passed by value, and there is no way to create a useful pointer-like result from a value.
     542Hence the parameter must have type ©T *©.
     543But then the expression must be rewritten as ``©p = &?( &x )©''
    526544---which doesn't seem like progress!
    527545
    528546The rule for address-of expressions would have to be something like ``keep applying address-of functions until you get one that takes a pointer argument, then use the built-in operator and stop''.
    529 It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$.
    530 
    531 \item
    532 The \lstinline$sizeof$ operator.
     547It seems simpler to define a conversion function from ©T *© to ©T_ptr©.
     548
     549\item
     550The ©sizeof© operator.
    533551It is already defined for every object type, and intimately tied into the language's storage allocation model.
    534552Redefining it seems pointless.
    535553
    536554\item
    537 The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''.
     555The ``member of'' operators ``©.©'' and ``©->©''.
    538556These are not really infix operators, since their right ``operand'' is not a value or object.
    539557
     
    572590The ``fewest unsafe conversions'' rule ensures that the usual conversions are done, if possible.
    573591The ``lowest total expression cost'' rule chooses the proper common type.
    574 The odd-looking ``highest argument conversion cost'' rule ensures that, when unary expressions must be converted, conversions of function results are preferred to conversion of function arguments: \lstinline$(double)-i$ will be preferred to \lstinline$-(double)i$.
     592The odd-looking ``highest argument conversion cost'' rule ensures that, when unary expressions must be converted, conversions of function results are preferred to conversion of function arguments: ©(double)-i© will be preferred to ©-(double)i©.
    575593
    576594The ``least polymorphic'' rule reduces the number of polymorphic function calls, since such functions are presumably more expensive than monomorphic functions and since the more specific function is presumably more appropriate.
    577 It also gives preference to monomorphic values (such as the
    578 \lstinline$int$ \lstinline$0$) over polymorphic values (such as the \Index{null pointer}
    579 \lstinline$0$\use{0}).
     595It also gives preference to monomorphic values (such as the ©int© ©0©) over polymorphic values (such as the \Index{null pointer} ©0©\use{0}).
    580596However, interpretations that call polymorphic functions are preferred to interpretations that perform unsafe conversions, because those conversions potentially lose accuracy or violate strong typing.
    581597
     
    597613\begin{rationale}
    598614Predefined functions and constants have internal linkage because that simplifies optimization in traditional compile-and-link environments.
    599 For instance, ``\lstinline$an_int + an_int$'' is equivalent to ``\lstinline$?+?(an_int, an_int)$''.
     615For instance, ``©an_int + an_int©'' is equivalent to ``©?+?(an_int, an_int)©''.
    600616If integer addition has not been redefined in the current scope, a compiler can generate code to perform the addition directly.
    601617If predefined functions had external linkage, this optimization would be difficult.
     
    623639\rhs \nonterm{constant}
    624640\rhs \nonterm{string-literal}
    625 \rhs \lstinline$($ \nonterm{expression} \lstinline$)$
     641\rhs ©(© \nonterm{expression} ©)©
    626642\rhs \nonterm{generic-selection}
    627643\end{syntax}
     
    629645\predefined
    630646\begin{lstlisting}
    631 const int 1;@\use{1}@
    632 const int 0;@\use{0}@
     647const int 1;§\use{1}§
     648const int 0;§\use{0}§
    633649forall( dtype DT ) DT * const 0;
    634650forall( ftype FT ) FT * const 0;
     
    639655
    640656A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type and value defined by {\c11}.
    641 The predefined integer identifiers ``\lstinline$1$'' and ``\lstinline$0$'' have the integer values 1 and 0, respectively.
    642 The other two predefined ``\lstinline$0$'' identifiers are bound to polymorphic pointer values that, when specialized\index{specialization} with a data type or function type respectively, produce a null pointer of that type.
     657The predefined integer identifiers ``©1©'' and ``©0©'' have the integer values 1 and 0, respectively.
     658The other two predefined ``©0©'' identifiers are bound to polymorphic pointer values that, when specialized\index{specialization} with a data type or function type respectively, produce a null pointer of that type.
    643659
    644660A parenthesised expression has the same interpretations as the contained \nonterm{expression}.
    645661
    646662\examples
    647 The expression \lstinline$(void *)0$\use{0} specializes the (polymorphic) null pointer to a null pointer to \lstinline$void$. \lstinline$(const void *)0$ does the same, and also uses a safe conversion from \lstinline$void *$ to \lstinline$const void *$.
    648 In each case, the null pointer conversion is better\index{best valid interpretations} than the unsafe conversion of the integer
    649 \lstinline$0$ to a pointer.
     663The expression ©(void *)0©\use{0} specializes the (polymorphic) null pointer to a null pointer to ©void©. ©(const void *)0© does the same, and also uses a safe conversion from ©void *© to ©const void *©.
     664In each case, the null pointer conversion is better\index{best valid interpretations} than the unsafe conversion of the integer ©0© to a pointer.
    650665
    651666\begin{rationale}
     
    653668
    654669\CFA does not have C's concept of ``null pointer constants'', which are not typed values but special strings of tokens.
    655 The C token ``\lstinline$0$'' is an expression of type \lstinline$int$ with the value ``zero'', and it \emph{also} is a null pointer constant.
    656 Similarly,
    657 ``\lstinline$(void *)0$ is an expression of type \lstinline$(void *)$ whose value is a null pointer, and it also is a null pointer constant.
    658 However, in C, ``\lstinline$(void *)(void *)0$'' is
     670The C token ``©0©'' is an expression of type ©int© with the value ``zero'', and it \emph{also} is a null pointer constant.
     671Similarly, ``©(void *)0© is an expression of type ©(void *)© whose value is a null pointer, and it also is a null pointer constant.
     672However, in C, ``©(void *)(void *)0©'' is
    659673\emph{not} a null pointer constant, even though it is null-valued, a pointer, and constant! The semantics of C expressions contain many special cases to deal with subexpressions that are null pointer constants.
    660674
     
    663677\begin{lstlisting}
    664678forall( dtype DT ) DT * const 0;
    665 \end{lstlisting} means that \lstinline$0$ is a polymorphic object, and contains a value that can have \emph{any} pointer-to-object type or pointer-to-incomplete type.
     679\end{lstlisting} means that ©0© is a polymorphic object, and contains a value that can have \emph{any} pointer-to-object type or pointer-to-incomplete type.
    666680The only such value is the null pointer.
    667681Therefore the type \emph{alone} is enough to identify a null pointer.
     
    673687
    674688\constraints The best interpretation of the controlling expression shall be unambiguous\index{ambiguous interpretation}, and shall have type compatible with at most one of the types named in its generic association list.
    675 If a generic selection has no \lstinline$default$ generic association, the best interpretation of its controlling expression shall have type compatible with exactly one of the types named in its generic association list.
     689If a generic selection has no ©default© generic association, the best interpretation of its controlling expression shall have type compatible with exactly one of the types named in its generic association list.
    676690
    677691\semantics
     
    684698\lhs{postfix-expression}
    685699\rhs \nonterm{primary-expression}
    686 \rhs \nonterm{postfix-expression} \lstinline$[$ \nonterm{expression} \lstinline$]$
    687 \rhs \nonterm{postfix-expression} \lstinline$($
    688          \nonterm{argument-expression-list}\opt \lstinline$)$
    689 \rhs \nonterm{postfix-expression} \lstinline$.$ \nonterm{identifier}
    690 \rhs \nonterm{postfix-expression} \lstinline$->$ \nonterm{identifier}
    691 \rhs \nonterm{postfix-expression} \lstinline$++$
    692 \rhs \nonterm{postfix-expression} \lstinline$--$
    693 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$}$
    694 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$,$ \lstinline$}$
     700\rhs \nonterm{postfix-expression} ©[© \nonterm{expression} ©]©
     701\rhs \nonterm{postfix-expression} ©(©
     702         \nonterm{argument-expression-list}\opt ©)©
     703\rhs \nonterm{postfix-expression} ©.© \nonterm{identifier}
     704\rhs \nonterm{postfix-expression} ©->© \nonterm{identifier}
     705\rhs \nonterm{postfix-expression} ©++©
     706\rhs \nonterm{postfix-expression} ©--©
     707\rhs ©(© \nonterm{type-name} ©)© ©{© \nonterm{initializer-list} ©}©
     708\rhs ©(© \nonterm{type-name} ©)© ©{© \nonterm{initializer-list} ©,© ©}©
    695709\lhs{argument-expression-list}
    696710\rhs \nonterm{assignment-expression}
    697 \rhs \nonterm{argument-expression-list} \lstinline$,$
     711\rhs \nonterm{argument-expression-list} ©,©
    698712         \nonterm{assignment-expression}
    699713\end{syntax}
     
    701715\rewriterules
    702716\begin{lstlisting}
    703 a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type@\use{?[?]}@
    704 a[b] @\rewrite@ ?[?]( a, b ) // otherwise
    705 a( @\emph{arguments}@ ) @\rewrite@ ?()( a, @\emph{arguments}@ )@\use{?()}@
    706 a++ @\rewrite@ ?++(&( a ))@\use{?++}@
    707 a-- @\rewrite@ ?--(&( a ))@\use{?--}@
     717a[b] => ?[?]( b, a ) // if a has integer type§\use{?[?]}§
     718a[b] => ?[?]( a, b ) // otherwise
     719a( §\emph{arguments}§ ) => ?()( a, §\emph{arguments}§ )§\use{?()}§
     720a++ => ?++(&( a ))§\use{?++}§
     721a-- => ?--(&( a ))§\use{?--}§
    708722\end{lstlisting}
    709723
     
    713727\predefined
    714728\begin{lstlisting}
    715 forall( otype T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@
     729forall( otype T ) lvalue T ?[?]( T *, ptrdiff_t );§\use{ptrdiff_t}§
    716730forall( otype T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t );
    717731forall( otype T ) lvalue const T ?[?]( const T *, ptrdiff_t );
     
    733747The interpretations of subscript expressions are the interpretations of the corresponding function call expressions.
    734748\begin{rationale}
    735 C defines subscripting as pointer arithmetic in a way that makes \lstinline$a[i]$ and
    736 \lstinline$i[a]$ equivalent. \CFA provides the equivalence through a rewrite rule to reduce the number of overloadings of \lstinline$?[?]$.
     749C defines subscripting as pointer arithmetic in a way that makes ©a[i]© and ©i[a]© equivalent. \CFA provides the equivalence through a rewrite rule to reduce the number of overloadings of ©?[?]©.
    737750
    738751Subscript expressions are rewritten as function calls that pass the first parameter by value.
    739752This is somewhat unfortunate, since array-like types tend to be large.
    740 The alternative is to use the rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''.
    741 However, C semantics forbid this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which does not have an address.
     753The alternative is to use the rewrite rule ``©a[b] => ?[?](&(a), b)©''.
     754However, C semantics forbid this approach: the ©a© in ``©a[b]©'' can be an arbitrary pointer value, which does not have an address.
    742755
    743756The repetitive form of the predefined identifiers shows up a deficiency\index{deficiencies!pointers
     
    754767\nonterm{postfix-expression} in a function call may have some interpretations that are function designators and some that are not.
    755768
    756 For those interpretations of the \nonterm{postfix-expression} that are not function designators, the expression is rewritten and becomes a call of a function named ``\lstinline$?()$''.
     769For those interpretations of the \nonterm{postfix-expression} that are not function designators, the expression is rewritten and becomes a call of a function named ``©?()©''.
    757770The valid interpretations of the rewritten expression are determined in the manner described below.
    758771
     
    761774\begin{itemize}
    762775\item if the argument corresponds to a parameter in the function designator's prototype, the argument interpretation must have the same type as the corresponding parameter, or be implicitly convertible to the parameter's type
    763 \item if the function designator's type does not include a prototype or if the argument corresponds to
    764 ``\lstinline$...$'' in a prototype, a \Index{default argument promotion} is applied to it.
     776\item if the function designator's type does not include a prototype or if the argument corresponds to ``©...©'' in a prototype, a \Index{default argument promotion} is applied to it.
    765777\end{itemize}
    766778The type of the valid interpretation is the return type of the function designator.
    767779
    768 For those combinations where the interpretation of the \nonterm{postfix-expression} is a
    769 \Index{polymorphic function} designator and the function designator accepts the number of arguments given, there shall be at least one set of \define{implicit argument}s for the implicit parameters such that
     780For those combinations where the interpretation of the \nonterm{postfix-expression} is a \Index{polymorphic function} designator and the function designator accepts the number of arguments given, there shall be at least one set of \define{implicit argument}s for the implicit parameters such that
    770781\begin{itemize}
    771782\item
    772 If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the implicit argument must be an object type;
    773 if it uses \lstinline$dtype$, the implicit argument must be an object type or an incomplete type;
    774 and if it uses \lstinline$ftype$, the implicit argument must be a function type.
     783If the declaration of the implicit parameter uses \Index{type-class} ©type©\use{type}, the implicit argument must be an object type;
     784if it uses ©dtype©, the implicit argument must be an object type or an incomplete type;
     785and if it uses ©ftype©, the implicit argument must be a function type.
    775786
    776787\item if an explicit parameter's type uses any implicit parameters, then the corresponding explicit argument must have a type that is (or can be safely converted\index{safe conversion} to) the type produced by substituting the implicit arguments for the implicit parameters in the explicit parameter type.
     
    791802\begin{rationale}
    792803One desirable property of a polymorphic programming language is \define{generalizability}: the ability to replace an abstraction with a more general but equivalent abstraction without requiring changes in any of the uses of the original\cite{Cormack90}.
    793 For instance, it should be possible to replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( otype T ) T f( T );$'' without affecting any calls of \lstinline$f$.
    794 
    795 \CFA\index{deficiencies!generalizability} does not fully possess this property, because
    796 \Index{unsafe conversion} are not done when arguments are passed to polymorphic parameters.
     804For instance, it should be possible to replace a function ``©int f( int );©'' with ``©forall( otype T ) T f( T );©'' without affecting any calls of ©f©.
     805
     806\CFA\index{deficiencies!generalizability} does not fully possess this property, because \Index{unsafe conversion} are not done when arguments are passed to polymorphic parameters.
    797807Consider
    798808\begin{lstlisting}
     
    805815f = g( d, f );          // (3) (unsafe conversion to float)
    806816\end{lstlisting}
    807 If \lstinline$g$ was replaced by ``\lstinline$forall( otype T ) T g( T, T );$'', the first and second calls would be unaffected, but the third would change: \lstinline$f$ would be converted to
    808 \lstinline$double$, and the result would be a \lstinline$double$.
    809 
    810 Another example is the function ``\lstinline$void h( int *);$''.
    811 This function can be passed a
    812 \lstinline$void *$ argument, but the generalization ``\lstinline$forall( otype T ) void h( T *);$'' can not.
    813 In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an object type.
    814 If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any} object type, which is undesirable.
     817If ©g© was replaced by ``©forall( otype T ) T g( T, T );©'', the first and second calls would be unaffected, but the third would change: ©f© would be converted to ©double©, and the result would be a ©double©.
     818
     819Another example is the function ``©void h( int *);©''.
     820This function can be passed a ©void *© argument, but the generalization ``©forall( otype T ) void h( T *);©'' can not.
     821In this case, ©void© is not a valid value for ©T© because it is not an object type.
     822If unsafe conversions were allowed, ©T© could be inferred to be \emph{any} object type, which is undesirable.
    815823\end{rationale}
    816824
    817825\examples
    818 A function called ``\lstinline$?()$'' might be part of a numerical differentiation package.
     826A function called ``©?()©'' might be part of a numerical differentiation package.
    819827\begin{lstlisting}
    820828extern otype Derivative;
     
    827835d = sin_dx( 12.9 );
    828836\end{lstlisting}
    829 Here, the only interpretation of \lstinline$sin_dx$ is as an object of type \lstinline$Derivative$.
    830 For that interpretation, the function call is treated as ``\lstinline$?()( sin_dx, 12.9 )$''.
     837Here, the only interpretation of ©sin_dx© is as an object of type ©Derivative©.
     838For that interpretation, the function call is treated as ``©?()( sin_dx, 12.9 )©''.
    831839\begin{lstlisting}
    832840int f( long );          // (1)
     
    835843int i = f( 5 );         // calls (1)
    836844\end{lstlisting}
    837 Function (1) provides a valid interpretation of ``\lstinline$f( 5 )$'', using an implicit \lstinline$int$ to \lstinline$long$ conversion.
    838 The other functions do not, since the second requires two arguments, and since there is no implicit conversion from \lstinline$int$ to \lstinline$int *$ that could be used with the third function.
     845Function (1) provides a valid interpretation of ``©f( 5 )©'', using an implicit ©int© to ©long© conversion.
     846The other functions do not, since the second requires two arguments, and since there is no implicit conversion from ©int© to ©int *© that could be used with the third function.
    839847
    840848\begin{lstlisting}
     
    842850double d = h( 1.5 );
    843851\end{lstlisting}
    844 ``\lstinline$1.5$'' is a \lstinline$double$ constant, so \lstinline$T$ is inferred to be
    845 \lstinline$double$, and the result of the function call is a \lstinline$double$.
     852``©1.5©'' is a ©double© constant, so ©T© is inferred to be ©double©, and the result of the function call is a ©double©.
    846853
    847854\begin{lstlisting}
    848855forall( otype T, otype U ) void g( T, U );      // (4)
    849856forall( otype T ) void g( T, T );                       // (5)
    850 forall( otype T ) void g( T, long );                    // (6)
     857forall( otype T ) void g( T, long );            // (6)
    851858void g( long, long );                                           // (7)
    852859double d;
    853860int i;
    854861int *p;
    855 g( d, d );                      // calls (5)
    856 g( d, i );                      // calls (6)
    857 g( i, i );                      // calls (7)
    858 g( i, p );                      // calls (4)
    859 \end{lstlisting}
    860 The first call has valid interpretations for all four versions of \lstinline$g$. (6) and (7) are discarded because they involve unsafe \lstinline$double$-to-\lstinline$long$ conversions. (5) is chosen because it is less polymorphic than (4).
     862g( d, d );                                                                      // calls (5)
     863g( d, i );                                                                      // calls (6)
     864g( i, i );                                                                      // calls (7)
     865g( i, p );                                                                      // calls (4)
     866\end{lstlisting}
     867The first call has valid interpretations for all four versions of ©g©. (6) and (7) are discarded because they involve unsafe ©double©-to-©long© conversions. (5) is chosen because it is less polymorphic than (4).
    861868
    862869For the second call, (7) is again discarded.
    863 Of the remaining interpretations for (4), (5), and (6) (with \lstinline$i$ converted to \lstinline$long$), (6) is chosen because it is the least polymorphic.
     870Of the remaining interpretations for (4), (5), and (6) (with ©i© converted to ©long©), (6) is chosen because it is the least polymorphic.
    864871
    865872The third call has valid interpretations for all of the functions;
     
    870877forall( otype T ) T min( T, T );
    871878double max( double, double );
    872 trait min_max( T ) {@\impl{min_max}@
     879trait min_max( T ) {§\impl{min_max}§
    873880        T min( T, T );
    874881        T max( T, T );
     
    877884shuffle( 9, 10 );
    878885\end{lstlisting}
    879 The only possibility for \lstinline$U$ is \lstinline$double$, because that is the type used in the only visible \lstinline$max$ function. 9 and 10 must be converted to \lstinline$double$, and
    880 \lstinline$min$ must be specialized with \lstinline$T$ bound to \lstinline$double$.
    881 \begin{lstlisting}
    882 extern void q( int );           // (8)
    883 extern void q( void * );        // (9)
     886The only possibility for ©U© is ©double©, because that is the type used in the only visible ©max© function. 9 and 10 must be converted to ©double©, and ©min© must be specialized with ©T© bound to ©double©.
     887\begin{lstlisting}
     888extern void q( int );                                           // (8)
     889extern void q( void * );                                        // (9)
    884890extern void r();
    885891q( 0 );
    886892r( 0 );
    887893\end{lstlisting}
    888 The \lstinline$int 0$ could be passed to (8), or the \lstinline$(void *)$ \Index{specialization} of the null pointer\index{null pointer} \lstinline$0$\use{0} could be passed to (9).
    889 The former is chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}.
    890 For the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has \emph{no} declared parameter types.
     894The ©int 0© could be passed to (8), or the ©(void *)© \Index{specialization} of the null pointer\index{null pointer} ©0©\use{0} could be passed to (9).
     895The former is chosen because the ©int© ©0© is \Index{less polymorphic}.
     896For the same reason, ©int© ©0© is passed to ©r()©, even though it has \emph{no} declared parameter types.
    891897
    892898
    893899\subsubsection{Structure and union members}
    894900
    895 \semantics In the member selection expression ``\lstinline$s$.\lstinline$m$'', there shall be at least one interpretation of \lstinline$s$ whose type is a structure type or union type containing a member named \lstinline$m$.
    896 If two or more interpretations of \lstinline$s$ have members named
    897 \lstinline$m$ with mutually compatible types, then the expression has an \Index{ambiguous interpretation} whose type is the composite type of the types of the members.
    898 If an interpretation of \lstinline$s$ has a member \lstinline$m$ whose type is not compatible with any other
    899 \lstinline$s$'s \lstinline$m$, then the expression has an interpretation with the member's type.
     901\semantics In the member selection expression ``©s©.©m©'', there shall be at least one interpretation of ©s© whose type is a structure type or union type containing a member named ©m©.
     902If two or more interpretations of ©s© have members named ©m© with mutually compatible types, then the expression has an \Index{ambiguous interpretation} whose type is the composite type of the types of the members.
     903If an interpretation of ©s© has a member ©m© whose type is not compatible with any other ©s©'s ©m©, then the expression has an interpretation with the member's type.
    900904The expression has no other interpretations.
    901905
    902 The expression ``\lstinline$p->m$'' has the same interpretations as the expression
    903 ``\lstinline$(*p).m$''.
     906The expression ``©p->m©'' has the same interpretations as the expression ``©(*p).m©''.
    904907
    905908
     
    996999        * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    9971000\end{lstlisting}
    998 For every extended integer type \lstinline$X$ there exist
     1001For every extended integer type ©X© there exist
    9991002% Don't use predefined: keep this out of prelude.cf.
    10001003\begin{lstlisting}
     
    10021005  ?--( volatile X * ), ?--( _Atomic volatile X * );
    10031006\end{lstlisting}
    1004 For every complete enumerated type \lstinline$E$ there exist
     1007For every complete enumerated type ©E© there exist
    10051008% Don't use predefined: keep this out of prelude.cf.
    10061009\begin{lstlisting}
     
    10101013
    10111014\begin{rationale}
    1012 Note that ``\lstinline$++$'' and ``\lstinline$--$'' are rewritten as function calls that are given a pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald has pointed out, this forces the modified operand of such expressions to be an lvalue.
     1015Note that ``©++©'' and ``©--©'' are rewritten as function calls that are given a pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald has pointed out, this forces the modified operand of such expressions to be an lvalue.
    10131016This partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues.
    10141017\end{rationale}
     
    10161019\begin{rationale}
    10171020In C, a semantic rule requires that pointer operands of increment and decrement be pointers to object types.
    1018 Hence, \lstinline$void *$ objects cannot be incremented.
    1019 In \CFA, the restriction follows from the use of a \lstinline$type$ parameter in the predefined function definitions, as opposed to \lstinline$dtype$, since only object types can be inferred arguments corresponding to the type parameter \lstinline$T$.
     1021Hence, ©void *© objects cannot be incremented.
     1022In \CFA, the restriction follows from the use of a ©type© parameter in the predefined function definitions, as opposed to ©dtype©, since only object types can be inferred arguments corresponding to the type parameter ©T©.
    10201023\end{rationale}
    10211024
    10221025\semantics
    10231026First, each interpretation of the operand of an increment or decrement expression is considered separately.
    1024 For each interpretation that is a bit-field or is declared with the
    1025 \lstinline$register$\index{register@{\lstinline$register$}} \index{Itorage-class specifier}, the expression has one valid interpretation, with the type of the operand, and the expression is ambiguous if the operand is.
     1027For each interpretation that is a bit-field or is declared with the \Indexc{register}\index{storage-class specifier}, the expression has one valid interpretation, with the type of the operand, and the expression is ambiguous if the operand is.
    10261028
    10271029For the remaining interpretations, the expression is rewritten, and the interpretations of the expression are the interpretations of the corresponding function call.
     
    10361038\end{lstlisting}
    10371039\begin{sloppypar}
    1038 Since \lstinline$&(vs)$ has type \lstinline$volatile short int *$, the best valid interpretation of
    1039 \lstinline$vs++$ calls the \lstinline$?++$ function with the \lstinline$volatile short *$ parameter.
    1040 \lstinline$s++$ does the same, applying the safe conversion from \lstinline$short int *$ to
    1041 \lstinline$volatile short int *$.
    1042 Note that there is no conversion that adds an \lstinline$_Atomic$ qualifier, so the \lstinline$_Atomic volatile short int$ overloading does not provide a valid interpretation.
     1040Since ©&(vs)© has type ©volatile short int *©, the best valid interpretation of ©vs++© calls the ©?++© function with the ©volatile short *© parameter.
     1041©s++© does the same, applying the safe conversion from ©short int *© to ©volatile short int *©.
     1042Note that there is no conversion that adds an ©_Atomic© qualifier, so the ©_Atomic volatile short int© overloading does not provide a valid interpretation.
    10431043\end{sloppypar}
    10441044
    1045 There is no safe conversion from \lstinline$const short int *$ to \lstinline$volatile short int *$, and no \lstinline$?++$ function that accepts a \lstinline$const *$ parameter, so \lstinline$cs++$ has no valid interpretations.
    1046 
    1047 The best valid interpretation of \lstinline$as++$ calls the \lstinline$short ?++$ function with the \lstinline$_Atomic volatile short int *$ parameter, applying a safe conversion to add the \lstinline$volatile$ qualifier.
     1045There is no safe conversion from ©const short int *© to ©volatile short int *©, and no ©?++© function that accepts a ©const *© parameter, so ©cs++© has no valid interpretations.
     1046
     1047The best valid interpretation of ©as++© calls the ©short ?++© function with the ©_Atomic volatile short int *© parameter, applying a safe conversion to add the ©volatile© qualifier.
    10481048\begin{lstlisting}
    10491049char * const restrict volatile * restrict volatile pqpc;
     
    10521052ppc++;
    10531053\end{lstlisting}
    1054 Since \lstinline$&(pqpc)$ has type \lstinline$char * const restrict volatile * restrict volatile *$, the best valid interpretation of \lstinline$pqpc++$ calls the polymorphic \lstinline$?++$ function with the \lstinline$const restrict volatile T * restrict volatile *$ parameter, inferring \lstinline$T$ to be \lstinline$char *$.
    1055 
    1056 \lstinline$ppc++$ calls the same function, again inferring \lstinline$T$ to be \lstinline$char *$, and using the safe conversions from \lstinline$T$ to \lstinline$T const$ \lstinline$restrict volatile$.
     1054Since ©&(pqpc)© has type ©char * const restrict volatile * restrict volatile *©, the best valid interpretation of ©pqpc++© calls the polymorphic ©?++© function with the ©const restrict volatile T * restrict volatile *© parameter, inferring ©T© to be ©char *©.
     1055
     1056©ppc++© calls the same function, again inferring ©T© to be ©char *©, and using the safe conversions from ©T© to ©T const© ©restrict volatile©.
    10571057
    10581058\begin{rationale}
     
    10681068\begin{enumerate}
    10691069\item
    1070 ``\lstinline$char * p; p++;$''.
    1071 The argument to \lstinline$?++$ has type \lstinline$char * *$, and the result has type \lstinline$char *$.
    1072 The expression would be valid if \lstinline$?++$ were declared by
     1070``©char * p; p++;©''.
     1071The argument to ©?++© has type ©char * *©, and the result has type ©char *©.
     1072The expression would be valid if ©?++© were declared by
    10731073\begin{lstlisting}
    10741074forall( otype T ) T * ?++( T * * );
    1075 \end{lstlisting} with \lstinline$T$ inferred to be \lstinline$char$.
    1076 
    1077 \item
    1078 ``\lstinline$char *restrict volatile qp; qp++$''.
    1079 The result again has type \lstinline$char *$, but the argument now has type \lstinline$char *restrict volatile *$, so it cannot be passed to the hypothetical function declared in point 1.
     1075\end{lstlisting} with ©T© inferred to be ©char©.
     1076
     1077\item
     1078``©char *restrict volatile qp; qp++©''.
     1079The result again has type ©char *©, but the argument now has type ©char *restrict volatile *©, so it cannot be passed to the hypothetical function declared in point 1.
    10801080Hence the actual predefined function is
    10811081\begin{lstlisting}
    10821082forall( otype T ) T * ?++( T * restrict volatile * );
    1083 \end{lstlisting} which also accepts a \lstinline$char * *$ argument, because of the safe conversions that add
    1084 \lstinline$volatile$ and \lstinline$restrict$ qualifiers. (The parameter is not const-qualified, so constant pointers cannot be incremented.)
    1085 
    1086 \item
    1087 ``\lstinline$char *_Atomic ap; ap++$''.
    1088 The result again has type \lstinline$char *$, but no safe conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable.
    1089 A separate overloading of \lstinline$?++$ is required.
    1090 
    1091 \item
    1092 ``\lstinline$char const volatile * pq; pq++$''.
    1093 Here the result has type
    1094 \lstinline$char const volatile *$, so a new overloading is needed:
     1083\end{lstlisting} which also accepts a ©char * *© argument, because of the safe conversions that add ©volatile© and ©restrict© qualifiers. (The parameter is not const-qualified, so constant pointers cannot be incremented.)
     1084
     1085\item
     1086``©char *_Atomic ap; ap++©''.
     1087The result again has type ©char *©, but no safe conversion adds an ©_Atomic© qualifier, so the function in point 2 is not applicable.
     1088A separate overloading of ©?++© is required.
     1089
     1090\item
     1091``©char const volatile * pq; pq++©''.
     1092Here the result has type ©char const volatile *©, so a new overloading is needed:
    10951093\begin{lstlisting}
    10961094forall( otype T ) T const volatile * ?++( T const volatile *restrict volatile * );
     
    10991097 
    11001098\item
    1101 ``\lstinline$float *restrict * prp; prp++$''.
    1102 The \lstinline$restrict$ qualifier is handled just like \lstinline$const$ and \lstinline$volatile$ in the previous case:
     1099``©float *restrict * prp; prp++©''.
     1100The ©restrict© qualifier is handled just like ©const© and ©volatile© in the previous case:
    11031101\begin{lstlisting}
    11041102forall( otype T ) T restrict * ?++( T restrict *restrict volatile * );
    1105 \end{lstlisting} with \lstinline$T$ inferred to be \lstinline$float *$.
    1106 This looks odd, because {\c11} contains a constraint that requires restrict-qualified types to be pointer-to-object types, and \lstinline$T$ is not syntactically a pointer type. \CFA loosens the constraint.
     1103\end{lstlisting} with ©T© inferred to be ©float *©.
     1104This looks odd, because {\c11} contains a constraint that requires restrict-qualified types to be pointer-to-object types, and ©T© is not syntactically a pointer type. \CFA loosens the constraint.
    11071105\end{enumerate}
    11081106\end{rationale}
     
    11191117\begin{syntax}
    11201118\lhs{unary-expression}
    1121 \rhs \nonterm{postfix-expression}
    1122 \rhs \lstinline$++$ \nonterm{unary-expression}
    1123 \rhs \lstinline$--$ \nonterm{unary-expression}
    1124 \rhs \nonterm{unary-operator} \nonterm{cast-expression}
    1125 \rhs \lstinline$sizeof$ \nonterm{unary-expression}
    1126 \rhs \lstinline$sizeof$ \lstinline$($ \nonterm{type-name} \lstinline$)$
    1127 \lhs{unary-operator} one of \rhs \lstinline$&$ \lstinline$*$ \lstinline$+$ \lstinline$-$ \lstinline$~$ \lstinline$!$
     1119        \rhs \nonterm{postfix-expression}
     1120        \rhs ©++© \nonterm{unary-expression}
     1121        \rhs ©--© \nonterm{unary-expression}
     1122        \rhs \nonterm{unary-operator} \nonterm{cast-expression}
     1123        \rhs ©sizeof© \nonterm{unary-expression}
     1124        \rhs ©sizeof© ©(© \nonterm{type-name} ©)©
     1125\lhs{unary-operator} one of
     1126        \rhs ©&© ©*© ©+© ©-© ©~© ©!©
    11281127\end{syntax}
    11291128
    11301129\rewriterules
    11311130\begin{lstlisting}
    1132 *a      @\rewrite@ *?( a ) @\use{*?}@
    1133 +a      @\rewrite@ +?( a ) @\use{+?}@
    1134 -a      @\rewrite@ -?( a ) @\use{-?}@
    1135 ~a      @\rewrite@ ~?( a ) @\use{~?}@
    1136 !a      @\rewrite@ !?( a ) @\use{"!?}@
    1137 ++a     @\rewrite@ ++?(&( a )) @\use{++?}@
    1138 --a     @\rewrite@ --?(&( a )) @\use{--?}@
     1131*a      => *?( a )§\use{*?}§
     1132+a      => +?( a )§\use{+?}§
     1133-a      => -?( a )§\use{-?}§
     1134~a      => ~?( a )§\use{~?}§
     1135!a      => !?( a )§\use{"!?}§
     1136++a     => ++?(&( a ))§\use{++?}§
     1137--a     => --?(&( a ))§\use{--?}§
    11391138\end{lstlisting}
    11401139
     
    12321231        * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    12331232\end{lstlisting}
    1234 For every extended integer type \lstinline$X$ there exist
     1233For every extended integer type ©X© there exist
    12351234% Don't use predefined: keep this out of prelude.cf.
    12361235\begin{lstlisting}
     
    12401239        --?( _Atomic volatile X * );
    12411240\end{lstlisting}
    1242 For every complete enumerated type \lstinline$E$ there exist
     1241For every complete enumerated type ©E© there exist
    12431242% Don't use predefined: keep this out of prelude.cf.
    12441243\begin{lstlisting}
     
    12771276
    12781277\constraints
    1279 The operand of the unary ``\lstinline$&$'' operator shall have exactly one
    1280 \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.
     1278The operand of the unary ``©&©'' operator shall have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.
    12811279
    12821280\semantics
    1283 The ``\lstinline$&$'' expression has one interpretation which is of type \lstinline$T *$, where
    1284 \lstinline$T$ is the type of the operand.
     1281The ``©&©'' expression has one interpretation which is of type ©T *©, where ©T© is the type of the operand.
    12851282
    12861283The interpretations of an indirection expression are the interpretations of the corresponding function call.
     
    13111308forall( ftype FT ) int !?( FT * );
    13121309\end{lstlisting}
    1313 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
     1310For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    13141311% Don't use predefined: keep this out of prelude.cf.
    13151312\begin{lstlisting}
     
    13241321\begin{lstlisting}
    13251322long int li;
    1326 void eat_double( double );@\use{eat_double}@
    1327 eat_double(-li ); // @\rewrite@ eat_double( -?( li ) );
    1328 \end{lstlisting}
    1329 The valid interpretations of ``\lstinline$-li$'' (assuming no extended integer types exist) are
     1323void eat_double( double );§\use{eat_double}§
     1324eat_double(-li ); // => eat_double( -?( li ) );
     1325\end{lstlisting}
     1326The valid interpretations of ``©-li©'' (assuming no extended integer types exist) are
    13301327\begin{center}
    13311328\begin{tabular}{llc} interpretation & result type & expression conversion cost \\
    13321329\hline
    1333 \lstinline$-?( (int)li )$                                       & \lstinline$int$                                       & (unsafe) \\
    1334 \lstinline$-?( (unsigned)li)$                           & \lstinline$unsigned int$                      & (unsafe) \\
    1335 \lstinline$-?( (long)li)$                                       & \lstinline$long$                                      & 0 \\
    1336 \lstinline$-?( (long unsigned int)li)$          & \lstinline$long unsigned int$         & 1 \\
    1337 \lstinline$-?( (long long int)li)$                      & \lstinline$long long int$                     & 2 \\
    1338 \lstinline$-?( (long long unsigned int)li)$     & \lstinline$long long unsigned int$& 3 \\
    1339 \lstinline$-?( (float)li)$                                      & \lstinline$float$                                     & 4 \\
    1340 \lstinline$-?( (double)li)$                                     & \lstinline$double$                            & 5 \\
    1341 \lstinline$-?( (long double)li)$                        & \lstinline$long double$                       & 6 \\
    1342 \lstinline$-?( (_Complex float)li)$                     & \lstinline$float$                                     & (unsafe) \\
    1343 \lstinline$-?( (_Complex double)li)$            & \lstinline$double$                            & (unsafe) \\
    1344 \lstinline$-?( (_Complex long double)li)$       & \lstinline$long double$                       & (unsafe) \\
     1330©-?( (int)li )©                                         & ©int©                                         & (unsafe) \\
     1331©-?( (unsigned)li)©                                     & ©unsigned int©                        & (unsafe) \\
     1332©-?( (long)li)©                                         & ©long©                                        & 0 \\
     1333©-?( (long unsigned int)li)©            & ©long unsigned int©           & 1 \\
     1334©-?( (long long int)li)©                        & ©long long int©                       & 2 \\
     1335©-?( (long long unsigned int)li)©       & ©long long unsigned int©      & 3 \\
     1336©-?( (float)li)©                                        & ©float©                                       & 4 \\
     1337©-?( (double)li)©                                       & ©double©                                      & 5 \\
     1338©-?( (long double)li)©                          & ©long double©                         & 6 \\
     1339©-?( (_Complex float)li)©                       & ©float©                                       & (unsafe) \\
     1340©-?( (_Complex double)li)©                      & ©double©                                      & (unsafe) \\
     1341©-?( (_Complex long double)li)©         & ©long double©                         & (unsafe) \\
    13451342\end{tabular}
    13461343\end{center}
    1347 The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument conversion and the cost of the entire expression, are
     1344The valid interpretations of the ©eat_double© call, with the cost of the argument conversion and the cost of the entire expression, are
    13481345\begin{center}
    13491346\begin{tabular}{lcc} interpretation & argument cost & expression cost \\
    13501347\hline
    1351 \lstinline$eat_double( (double)-?( (int)li) )$                                  & 7                     & (unsafe) \\
    1352 \lstinline$eat_double( (double)-?( (unsigned)li) )$                             & 6                     & (unsafe) \\
    1353 \lstinline$eat_double( (double)-?(li) )$                                                & 5                     & \(0+5=5\) \\
    1354 \lstinline$eat_double( (double)-?( (long unsigned int)li) )$    & 4                     & \(1+4=5\) \\
    1355 \lstinline$eat_double( (double)-?( (long long int)li) )$                & 3                     & \(2+3=5\) \\
    1356 \lstinline$eat_double( (double)-?( (long long unsigned int)li) )$& 2            & \(3+2=5\) \\
    1357 \lstinline$eat_double( (double)-?( (float)li) )$                                & 1                     & \(4+1=5\) \\
    1358 \lstinline$eat_double( (double)-?( (double)li) )$                               & 0                     & \(5+0=5\) \\
    1359 \lstinline$eat_double( (double)-?( (long double)li) )$                  & (unsafe)      & (unsafe) \\
    1360 \lstinline$eat_double( (double)-?( (_Complex float)li) )$               & (unsafe)      & (unsafe) \\
    1361 \lstinline$eat_double( (double)-?( (_Complex double)li) )$              & (unsafe)      & (unsafe) \\
    1362 \lstinline$eat_double( (double)-?( (_Complex long double)li) )$ & (unsafe)      & (unsafe) \\
     1348©eat_double( (double)-?( (int)li) )©                                    & 7                     & (unsafe) \\
     1349©eat_double( (double)-?( (unsigned)li) )©                               & 6                     & (unsafe) \\
     1350©eat_double( (double)-?(li) )©                                                  & 5                     & \(0+5=5\) \\
     1351©eat_double( (double)-?( (long unsigned int)li) )©              & 4                     & \(1+4=5\) \\
     1352©eat_double( (double)-?( (long long int)li) )©                  & 3                     & \(2+3=5\) \\
     1353©eat_double( (double)-?( (long long unsigned int)li) )© & 2                     & \(3+2=5\) \\
     1354©eat_double( (double)-?( (float)li) )©                                  & 1                     & \(4+1=5\) \\
     1355©eat_double( (double)-?( (double)li) )©                                 & 0                     & \(5+0=5\) \\
     1356©eat_double( (double)-?( (long double)li) )©                    & (unsafe)      & (unsafe) \\
     1357©eat_double( (double)-?( (_Complex float)li) )©                 & (unsafe)      & (unsafe) \\
     1358©eat_double( (double)-?( (_Complex double)li) )©                & (unsafe)      & (unsafe) \\
     1359©eat_double( (double)-?( (_Complex long double)li) )©   & (unsafe)      & (unsafe) \\
    13631360\end{tabular}
    13641361\end{center}
    1365 Each has result type \lstinline$void$, so the best must be selected.
     1362Each has result type ©void©, so the best must be selected.
    13661363The interpretations involving unsafe conversions are discarded.
    1367 The remainder have equal expression conversion costs, so the
    1368 ``highest argument conversion cost'' rule is invoked, and the chosen interpretation is
    1369 \lstinline$eat_double( (double)-?(li) )$.
    1370 
    1371 
    1372 \subsubsection{The \lstinline$sizeof$ and \lstinline$_Alignof$ operators}
     1364The remainder have equal expression conversion costs, so the ``highest argument conversion cost'' rule is invoked, and the chosen interpretation is ©eat_double( (double)-?(li) )©.
     1365
     1366
     1367\subsubsection[The sizeof and \_Alignof operators]{The \lstinline@sizeof@ and \lstinline@_Alignof@ operators}
    13731368
    13741369\constraints
    1375 The operand of \lstinline$sizeof$ or \lstinline$_Alignof$ shall not be \lstinline$type$,
    1376 \lstinline$dtype$, or \lstinline$ftype$.
    1377 
    1378 When the \lstinline$sizeof$\use{sizeof} operator is applied to an expression, the expression shall have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous. \semantics A \lstinline$sizeof$ or \lstinline$_Alignof$ expression has one interpretation, of type \lstinline$size_t$.
    1379 
    1380 When \lstinline$sizeof$ is applied to an identifier declared by a \nonterm{type-declaration} or a
     1370The operand of ©sizeof© or ©_Alignof© shall not be ©type©, ©dtype©, or ©ftype©.
     1371
     1372When the ©sizeof©\use{sizeof} operator is applied to an expression, the expression shall have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous. \semantics A ©sizeof© or ©_Alignof© expression has one interpretation, of type ©size_t©.
     1373
     1374When ©sizeof© is applied to an identifier declared by a \nonterm{type-declaration} or a
    13811375\nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand.
    13821376When the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the expression is not a constant expression.
    13831377
    1384 When \lstinline$_Alignof$ is applied to an identifier declared by a \nonterm{type-declaration} or a
     1378When ©_Alignof© is applied to an identifier declared by a \nonterm{type-declaration} or a
    13851379\nonterm{type-parameter}, it yields the alignment requirement of the type that implements the operand.
    13861380When the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the expression is not a constant expression.
     
    13891383otype Pair = struct { int first, second; };
    13901384size_t p_size = sizeof(Pair);           // constant expression
    1391 extern otype Rational;@\use{Rational}@
     1385extern otype Rational;§\use{Rational}§
    13921386size_t c_size = sizeof(Rational);       // non-constant expression
    13931387forall(type T) T f(T p1, T p2) {
     
    13961390}
    13971391\end{lstlisting}
    1398 ``\lstinline$sizeof Rational$'', although not statically known, is fixed.
    1399 Within \lstinline$f()$,
    1400 ``\lstinline$sizeof(T)$'' is fixed for each call of \lstinline$f()$, but may vary from call to call.
     1392``©sizeof Rational©'', although not statically known, is fixed.
     1393Within ©f()©, ``©sizeof(T)©'' is fixed for each call of ©f()©, but may vary from call to call.
    14011394\end{rationale}
    14021395
     
    14071400\lhs{cast-expression}
    14081401\rhs \nonterm{unary-expression}
    1409 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \nonterm{cast-expression}
     1402\rhs ©(© \nonterm{type-name} ©)© \nonterm{cast-expression}
    14101403\end{syntax}
    14111404
    14121405\constraints
    1413 The \nonterm{type-name} in a \nonterm{cast-expression} shall not be \lstinline$type$,
    1414 \lstinline$dtype$, or \lstinline$ftype$.
     1406The \nonterm{type-name} in a \nonterm{cast-expression} shall not be ©type©, ©dtype©, or ©ftype©.
    14151407
    14161408\semantics
    14171409
    1418 In a \Index{cast expression} ``\lstinline$($\nonterm{type-name}\lstinline$)e$'', if
    1419 \nonterm{type-name} is the type of an interpretation of \lstinline$e$, then that interpretation is the only interpretation of the cast expression;
    1420 otherwise, \lstinline$e$ shall have some interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast expression is the cast of the interpretation that can be converted at the lowest cost.
     1410In a \Index{cast expression} ``©(©\nonterm{type-name}©)e©'', if
     1411\nonterm{type-name} is the type of an interpretation of ©e©, then that interpretation is the only interpretation of the cast expression;
     1412otherwise, ©e© shall have some interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast expression is the cast of the interpretation that can be converted at the lowest cost.
    14211413The cast expression's interpretation is ambiguous\index{ambiguous interpretation} if more than one interpretation can be converted at the lowest cost or if the selected interpretation is ambiguous.
    14221414
     
    14311423\lhs{multiplicative-expression}
    14321424\rhs \nonterm{cast-expression}
    1433 \rhs \nonterm{multiplicative-expression} \lstinline$*$ \nonterm{cast-expression}
    1434 \rhs \nonterm{multiplicative-expression} \lstinline$/$ \nonterm{cast-expression}
    1435 \rhs \nonterm{multiplicative-expression} \lstinline$%$ \nonterm{cast-expression}
     1425\rhs \nonterm{multiplicative-expression} ©*© \nonterm{cast-expression}
     1426\rhs \nonterm{multiplicative-expression} ©/© \nonterm{cast-expression}
     1427\rhs \nonterm{multiplicative-expression} ©%© \nonterm{cast-expression}
    14361428\end{syntax}
    14371429
    14381430\rewriterules
    14391431\begin{lstlisting}
    1440 a * b @\rewrite@ ?*?( a, b )@\use{?*?}@
    1441 a / b @\rewrite@ ?/?( a, b )@\use{?/?}@
    1442 a % b @\rewrite@ ?%?( a, b )@\use{?%?}@
     1432a * b => ?*?( a, b )§\use{?*?}§
     1433a / b => ?/?( a, b )§\use{?/?}§
     1434a % b => ?%?( a, b )§\use{?%?}§
    14431435\end{lstlisting}
    14441436
     
    14671459        ?*?( _Complex long double, _Complex long double ), ?/?( _Complex long double, _Complex long double );
    14681460\end{lstlisting}
    1469 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
     1461For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    14701462% Don't use predefined: keep this out of prelude.cf.
    14711463\begin{lstlisting}
     
    14741466
    14751467\begin{rationale}
    1476 {\c11} does not include conversions from the \Index{real type}s to \Index{complex type}s in the
    1477 \Index{usual arithmetic conversion}s.  Instead it specifies conversion of the result of binary operations on arguments from mixed type domains. \CFA's predefined operators match that pattern.
     1468{\c11} does not include conversions from the \Index{real type}s to \Index{complex type}s in the \Index{usual arithmetic conversion}s.  Instead it specifies conversion of the result of binary operations on arguments from mixed type domains. \CFA's predefined operators match that pattern.
    14781469\end{rationale}
    14791470
     
    14851476int i;
    14861477long li;
    1487 void eat_double( double );@\use{eat_double}@
     1478void eat_double( double );§\use{eat_double}§
    14881479eat_double( li % i );
    14891480\end{lstlisting}
    1490 ``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''.
    1491 The valid interpretations of \lstinline$?%?(li, i )$, the cost\index{conversion cost} of converting their arguments, and the cost of converting the result to \lstinline$double$ (assuming no extended integer types are present ) are
     1481``©li % i©'' is rewritten as ``©?%?(li, i )©''.
     1482The valid interpretations of ©?%?(li, i )©, the cost\index{conversion cost} of converting their arguments, and the cost of converting the result to ©double© (assuming no extended integer types are present ) are
    14921483\begin{center}
    14931484\begin{tabular}{lcc} interpretation & argument cost & result cost \\
    1494 \hline 
    1495 \lstinline$ ?%?( (int)li, i )$                                                                          & (unsafe)      & 6     \\
    1496 \lstinline$ ?%?( (unsigned)li,(unsigned)i )$                                            & (unsafe)      & 5     \\
    1497 \lstinline$ ?%?( li, (long)i )$                                                                         & 1                     & 4     \\
    1498 \lstinline$ ?%?( (long unsigned)li,(long unsigned)i )$                          & 3                     & 3     \\
    1499 \lstinline$ ?%?( (long long)li,(long long)i )$                                          & 5                     & 2     \\
    1500 \lstinline$ ?%?( (long long unsigned)li, (long long unsigned)i )$       & 7                     & 1     \\
     1485\hline
     1486© ?%?( (int)li, i )©                                                                            & (unsafe)      & 6     \\
     1487© ?%?( (unsigned)li,(unsigned)i )©                                                      & (unsafe)      & 5     \\
     1488© ?%?( li, (long)i )©                                                                           & 1                     & 4     \\
     1489© ?%?( (long unsigned)li,(long unsigned)i )©                            & 3                     & 3     \\
     1490© ?%?( (long long)li,(long long)i )©                                            & 5                     & 2     \\
     1491© ?%?( (long long unsigned)li, (long long unsigned)i )©         & 7                     & 1     \\
    15011492\end{tabular}
    15021493\end{center}
    1503 The best interpretation of \lstinline$eat_double( li, i )$ is
    1504 \lstinline$eat_double( (double)?%?(li, (long)i ))$, which has no unsafe conversions and the lowest total cost.
    1505 
    1506 \begin{rationale}
    1507 {\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that belongs to a type that has an \Index{integer conversion rank} less than that of \lstinline$int$.If
    1508 \lstinline$s$ is a \lstinline$short int$, ``\lstinline$s *s$'' does not have type \lstinline$short int$;
    1509 it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches that pattern;
    1510 it does not predefine ``\lstinline$short ?*?( short, short )$''.
     1494The best interpretation of ©eat_double( li, i )© is ©eat_double( (double)?%?(li, (long)i ))©, which has no unsafe conversions and the lowest total cost.
     1495
     1496\begin{rationale}
     1497{\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that belongs to a type that has an \Index{integer conversion rank} less than that of ©int©.
     1498If ©s© is a ©short int©, ``©s *s©'' does not have type ©short int©;
     1499it is treated as ``©( (int)s ) * ( (int)s )©'', and has type ©int©. \CFA matches that pattern;
     1500it does not predefine ``©short ?*?( short, short )©''.
    15111501
    15121502These ``missing'' operators limit polymorphism.
     
    15171507square( s );
    15181508\end{lstlisting}
    1519 Since \CFA does not define a multiplication operator for \lstinline$short int$,
    1520 \lstinline$square( s )$ is treated as \lstinline$square( (int)s )$, and the result has type
    1521 \lstinline$int$.
     1509Since \CFA does not define a multiplication operator for ©short int©, ©square( s )© is treated as ©square( (int)s )©, and the result has type ©int©.
    15221510This is mildly surprising, but it follows the {\c11} operator pattern.
    15231511
     
    15281516product( sa, 5);
    15291517\end{lstlisting}
    1530 This has no valid interpretations, because \CFA has no conversion from ``array of
    1531 \lstinline$short int$'' to ``array of \lstinline$int$''.
     1518This has no valid interpretations, because \CFA has no conversion from ``array of ©short int©'' to ``array of ©int©''.
    15321519The alternatives in such situations include
    15331520\begin{itemize}
    15341521\item
    1535 Defining monomorphic overloadings of \lstinline$product$ for \lstinline$short$ and the other
    1536 ``small'' types.
    1537 \item
    1538 Defining ``\lstinline$short ?*?( short, short )$'' within the scope containing the call to
    1539 \lstinline$product$.
    1540 \item
    1541 Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to the operator's argument type.
     1522Defining monomorphic overloadings of ©product© for ©short© and the other ``small'' types.
     1523\item
     1524Defining ``©short ?*?( short, short )©'' within the scope containing the call to ©product©.
     1525\item
     1526Defining ©product© to take as an argument a conversion function from the ``small'' type to the operator's argument type.
    15421527\end{itemize}
    15431528\end{rationale}
     
    15491534\lhs{additive-expression}
    15501535\rhs \nonterm{multiplicative-expression}
    1551 \rhs \nonterm{additive-expression} \lstinline$+$ \nonterm{multiplicative-expression}
    1552 \rhs \nonterm{additive-expression} \lstinline$-$ \nonterm{multiplicative-expression}
     1536\rhs \nonterm{additive-expression} ©+© \nonterm{multiplicative-expression}
     1537\rhs \nonterm{additive-expression} ©-© \nonterm{multiplicative-expression}
    15531538\end{syntax}
    15541539
    15551540\rewriterules
    15561541\begin{lstlisting}
    1557 a + b @\rewrite@ ?+?( a, b )@\use{?+?}@
    1558 a - b @\rewrite@ ?-?( a, b )@\use{?-?}@
     1542a + b => ?+?( a, b )§\use{?+?}§
     1543a - b => ?-?( a, b )§\use{?-?}§
    15591544\end{lstlisting}
    15601545
     
    16091594        * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * );
    16101595\end{lstlisting}
    1611 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
     1596For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    16121597% Don't use predefined: keep this out of prelude.cf.
    16131598\begin{lstlisting}
     
    16191604
    16201605\begin{rationale}
    1621 \lstinline$ptrdiff_t$ is an implementation-defined identifier defined in \lstinline$<stddef.h>$ that is synonymous with a signed integral type that is large enough to hold the difference between two pointers.
     1606©ptrdiff_t© is an implementation-defined identifier defined in ©<stddef.h>© that is synonymous with a signed integral type that is large enough to hold the difference between two pointers.
    16221607It seems reasonable to use it for pointer addition as well. (This is technically a difference between \CFA and C, which only specifies that pointer addition uses an \emph{integral} argument.) Hence it is also used for subscripting, which is defined in terms of pointer addition.
    1623 The {\c11} standard uses \lstinline$size_t$ in several cases where a library function takes an argument that is used as a subscript, but \lstinline$size_t$ is unsuitable here because it is an unsigned type.
     1608The {\c11} standard uses ©size_t© in several cases where a library function takes an argument that is used as a subscript, but ©size_t© is unsuitable here because it is an unsigned type.
    16241609\end{rationale}
    16251610
     
    16301615\lhs{shift-expression}
    16311616\rhs \nonterm{additive-expression}
    1632 \rhs \nonterm{shift-expression} \lstinline$<<$ \nonterm{additive-expression}
    1633 \rhs \nonterm{shift-expression} \lstinline$>>$ \nonterm{additive-expression}
     1617\rhs \nonterm{shift-expression} ©<<© \nonterm{additive-expression}
     1618\rhs \nonterm{shift-expression} ©>>© \nonterm{additive-expression}
    16341619\end{syntax}
    16351620
    1636 \rewriterules \use{?>>?}%use{?<<?}
    1637 \begin{lstlisting}
    1638 a << b @\rewrite@ ?<<?( a, b )
    1639 a >> b @\rewrite@ ?>>?( a, b )
     1621\rewriterules
     1622\begin{lstlisting}
     1623a << b => ?<<?( a, b )§\use{?<<?}§
     1624a >> b => ?>>?( a, b )§\use{?>>?}§
    16401625\end{lstlisting}
    16411626
     
    16491634long long unsigned int ?<<?( long long unsigned int, int ), ?>>?( long long unsigned int, int);
    16501635\end{lstlisting}
    1651 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
     1636For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    16521637% Don't use predefined: keep this out of prelude.cf.
    16531638\begin{lstlisting}
     
    16691654\lhs{relational-expression}
    16701655\rhs \nonterm{shift-expression}
    1671 \rhs \nonterm{relational-expression} \lstinline$< $ \nonterm{shift-expression}
    1672 \rhs \nonterm{relational-expression} \lstinline$> $ \nonterm{shift-expression}
    1673 \rhs \nonterm{relational-expression} \lstinline$<=$ \nonterm{shift-expression}
    1674 \rhs \nonterm{relational-expression} \lstinline$>=$ \nonterm{shift-expression}
     1656\rhs \nonterm{relational-expression} ©< © \nonterm{shift-expression}
     1657\rhs \nonterm{relational-expression} ©> © \nonterm{shift-expression}
     1658\rhs \nonterm{relational-expression} ©<=© \nonterm{shift-expression}
     1659\rhs \nonterm{relational-expression} ©>=© \nonterm{shift-expression}
    16751660\end{syntax}
    16761661
    1677 \rewriterules\use{?>?}\use{?>=?}%use{?<?}%use{?<=?}
    1678 \begin{lstlisting}
    1679 a < b @\rewrite@ ?<?( a, b )
    1680 a > b @\rewrite@ ?>?( a, b )
    1681 a <= b @\rewrite@ ?<=?( a, b )
    1682 a >= b @\rewrite@ ?>=?( a, b )
     1662\rewriterules
     1663\begin{lstlisting}
     1664a < b => ?<?( a, b )§\use{?<?}§
     1665a > b => ?>?( a, b )§\use{?>?}§
     1666a <= b => ?<=?( a, b )§\use{?<=?}§
     1667a >= b => ?>=?( a, b )§\use{?>=?}§
    16831668\end{lstlisting}
    16841669
     
    17121697        ?>=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * );
    17131698\end{lstlisting}
    1714 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
     1699For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    17151700% Don't use predefined: keep this out of prelude.cf.
    17161701\begin{lstlisting}
     
    17301715\lhs{equality-expression}
    17311716\rhs \nonterm{relational-expression}
    1732 \rhs \nonterm{equality-expression} \lstinline$==$ \nonterm{relational-expression}
    1733 \rhs \nonterm{equality-expression} \lstinline$!=$ \nonterm{relational-expression}
     1717\rhs \nonterm{equality-expression} ©==© \nonterm{relational-expression}
     1718\rhs \nonterm{equality-expression} ©!=© \nonterm{relational-expression}
    17341719\end{syntax}
    17351720
    17361721\rewriterules
    17371722\begin{lstlisting}
    1738 a == b @\rewrite@ ?==?( a, b )@\use{?==?}@
    1739 a != b @\rewrite@ ?!=?( a, b )@\use{?"!=?}@
     1723a == b => ?==?( a, b )§\use{?==?}§
     1724a != b => ?!=?( a, b )§\use{?"!=?}§
    17401725\end{lstlisting}
    17411726
     
    17901775        ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ), ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * );
    17911776\end{lstlisting}
    1792 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
     1777For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    17931778% Don't use predefined: keep this out of prelude.cf.
    17941779\begin{lstlisting}
     
    17981783
    17991784\begin{rationale}
    1800 The polymorphic equality operations come in three styles: comparisons between pointers of compatible types, between pointers to \lstinline$void$ and pointers to object types or incomplete types, and between the \Index{null pointer} constant and pointers to any type.
     1785The polymorphic equality operations come in three styles: comparisons between pointers of compatible types, between pointers to ©void© and pointers to object types or incomplete types, and between the \Index{null pointer} constant and pointers to any type.
    18011786In the last case, a special constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA type system.
    18021787\end{rationale}
     
    18191804\lhs{AND-expression}
    18201805\rhs \nonterm{equality-expression}
    1821 \rhs \nonterm{AND-expression} \lstinline$&$ \nonterm{equality-expression}
     1806\rhs \nonterm{AND-expression} ©&© \nonterm{equality-expression}
    18221807\end{syntax}
    18231808
    18241809\rewriterules
    18251810\begin{lstlisting}
    1826 a & b @\rewrite@ ?&?( a, b )@\use{?&?}@
     1811a & b => ?&?( a, b )§\use{?&?}§
    18271812\end{lstlisting}
    18281813
     
    18361821long long unsigned int ?&?( long long unsigned int, long long unsigned int );
    18371822\end{lstlisting}
    1838 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
     1823For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    18391824% Don't use predefined: keep this out of prelude.cf.
    18401825\begin{lstlisting}
     
    18511836\lhs{exclusive-OR-expression}
    18521837\rhs \nonterm{AND-expression}
    1853 \rhs \nonterm{exclusive-OR-expression} \lstinline$^$ \nonterm{AND-expression}
     1838\rhs \nonterm{exclusive-OR-expression} ©^© \nonterm{AND-expression}
    18541839\end{syntax}
    18551840
    18561841\rewriterules
    18571842\begin{lstlisting}
    1858 a ^ b @\rewrite@ ?^?( a, b )@\use{?^?}@
     1843a ^ b => ?^?( a, b )§\use{?^?}§
    18591844\end{lstlisting}
    18601845
     
    18681853long long unsigned int ?^?( long long unsigned int, long long unsigned int );
    18691854\end{lstlisting}
    1870 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
     1855For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    18711856% Don't use predefined: keep this out of prelude.cf.
    18721857\begin{lstlisting}
     
    18831868\lhs{inclusive-OR-expression}
    18841869\rhs \nonterm{exclusive-OR-expression}
    1885 \rhs \nonterm{inclusive-OR-expression} \lstinline$|$ \nonterm{exclusive-OR-expression}
     1870\rhs \nonterm{inclusive-OR-expression} ©|© \nonterm{exclusive-OR-expression}
    18861871\end{syntax}
    18871872
    1888 \rewriterules\use{?"|?}
    1889 \begin{lstlisting}
    1890 a | b @\rewrite@ ?|?( a, b )
     1873\rewriterules
     1874\begin{lstlisting}
     1875a | b => ?|?( a, b )§\use{?"|?}§
    18911876\end{lstlisting}
    18921877
     
    19001885long long unsigned int ?|?( long long unsigned int, long long unsigned int );
    19011886\end{lstlisting}
    1902 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
     1887For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    19031888% Don't use predefined: keep this out of prelude.cf.
    19041889\begin{lstlisting}
     
    19151900\lhs{logical-AND-expression}
    19161901\rhs \nonterm{inclusive-OR-expression}
    1917 \rhs \nonterm{logical-AND-expression} \lstinline$&&$ \nonterm{inclusive-OR-expression}
     1902\rhs \nonterm{logical-AND-expression} ©&&© \nonterm{inclusive-OR-expression}
    19181903\end{syntax}
    19191904
    1920 \semantics The operands of the expression ``\lstinline$a && b$'' are treated as
    1921 ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b)!=0)$'', which shall both be unambiguous.
    1922 The expression has only one interpretation, which is of type \lstinline$int$.
    1923 \begin{rationale}
    1924 When the operands of a logical expression are values of built-in types, and ``\lstinline$!=$'' has not been redefined for those types, the compiler can optimize away the function calls.
    1925 
    1926 A common C idiom omits comparisons to \lstinline$0$ in the controlling expressions of loops and
    1927 \lstinline$if$ statements.
    1928 For instance, the loop below iterates as long as \lstinline$rp$ points at a \lstinline$Rational$ value that is non-zero.
    1929 
    1930 \begin{lstlisting}
    1931 extern otype Rational;@\use{Rational}@
    1932 extern const Rational 0;@\use{0}@
     1905\semantics The operands of the expression ``©a && b©'' are treated as ``©(int)((a)!=0)©'' and ``©(int)((b)!=0)©'', which shall both be unambiguous.
     1906The expression has only one interpretation, which is of type ©int©.
     1907\begin{rationale}
     1908When the operands of a logical expression are values of built-in types, and ``©!=©'' has not been redefined for those types, the compiler can optimize away the function calls.
     1909
     1910A common C idiom omits comparisons to ©0© in the controlling expressions of loops and ©if© statements.
     1911For instance, the loop below iterates as long as ©rp© points at a ©Rational© value that is non-zero.
     1912
     1913\begin{lstlisting}
     1914extern otype Rational;§\use{Rational}§
     1915extern const Rational 0;§\use{0}§
    19331916extern int ?!=?( Rational, Rational );
    19341917Rational *rp;
    19351918while ( rp && *rp ) { ... }
    19361919\end{lstlisting}
    1937 The logical expression calls the \lstinline$Rational$ inequality operator, passing it \lstinline$*rp$ and the \lstinline$Rational 0$, and getting a 1 or 0 as a result.
    1938 In contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$ conversion to \lstinline$*rp$ in the equivalent situation.
    1939 The conversion to \lstinline$int$ would produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was not written with this situation in mind.
     1920The logical expression calls the ©Rational© inequality operator, passing it ©*rp© and the ©Rational 0©, and getting a 1 or 0 as a result.
     1921In contrast, {\CC} would apply a programmer-defined ©Rational©-to-©int© conversion to ©*rp© in the equivalent situation.
     1922The conversion to ©int© would produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was not written with this situation in mind.
    19401923\end{rationale}
    19411924
     
    19461929\lhs{logical-OR-expression}
    19471930\rhs \nonterm{logical-AND-expression}
    1948 \rhs \nonterm{logical-OR-expression} \lstinline$||$ \nonterm{logical-AND-expression}
     1931\rhs \nonterm{logical-OR-expression} ©||© \nonterm{logical-AND-expression}
    19491932\end{syntax}
    19501933
    19511934\semantics
    19521935
    1953 The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous.
    1954 The expression has only one interpretation, which is of type \lstinline$int$.
     1936The operands of the expression ``©a || b©'' are treated as ``©(int)((a)!=0)©'' and ``©(int)((b))!=0)©'', which shall both be unambiguous.
     1937The expression has only one interpretation, which is of type ©int©.
    19551938
    19561939
     
    19601943\lhs{conditional-expression}
    19611944\rhs \nonterm{logical-OR-expression}
    1962 \rhs \nonterm{logical-OR-expression} \lstinline$?$ \nonterm{expression}
    1963          \lstinline$:$ \nonterm{conditional-expression}
     1945\rhs \nonterm{logical-OR-expression} ©?© \nonterm{expression}
     1946         ©:© \nonterm{conditional-expression}
    19641947\end{syntax}
    19651948
    19661949\semantics
    1967 In the conditional expression\use{?:} ``\lstinline$a?b:c$'', if the second and third operands both have an interpretation with \lstinline$void$ type, then the expression has an interpretation with type \lstinline$void$, equivalent to
     1950In the conditional expression\use{?:} ``©a?b:c©'', if the second and third operands both have an interpretation with ©void© type, then the expression has an interpretation with type ©void©, equivalent to
    19681951\begin{lstlisting}
    19691952( int)(( a)!=0) ? ( void)( b) : ( void)( c)
    19701953\end{lstlisting}
    19711954
    1972 If the second and third operands both have interpretations with non-\lstinline$void$ types, the expression is treated as if it were the call ``\lstinline$cond((a)!=0, b, c)$'', with \lstinline$cond$ declared as
     1955If the second and third operands both have interpretations with non-©void© types, the expression is treated as if it were the call ``©cond((a)!=0, b, c)©'', with ©cond© declared as
    19731956\begin{lstlisting}
    19741957forall( otype T ) T cond( int, T, T );
     
    20222005rand() ? i : l;
    20232006\end{lstlisting}
    2024 The best interpretation infers the expression's type to be \lstinline$long$ and applies the safe
    2025 \lstinline$int$-to-\lstinline$long$ conversion to \lstinline$i$.
     2007The best interpretation infers the expression's type to be ©long© and applies the safe ©int©-to-©long© conversion to ©i©.
    20262008
    20272009\begin{lstlisting}
     
    20302012rand() ? cip : vip;
    20312013\end{lstlisting}
    2032 The expression has type \lstinline$const volatile int *$, with safe conversions applied to the second and third operands to add \lstinline$volatile$ and \lstinline$const$ qualifiers, respectively.
     2014The expression has type ©const volatile int *©, with safe conversions applied to the second and third operands to add ©volatile© and ©const© qualifiers, respectively.
    20332015
    20342016\begin{lstlisting}
    20352017rand() ? cip : 0;
    20362018\end{lstlisting}
    2037 The expression has type \lstinline$const int *$, with a specialization conversion applied to
    2038 \lstinline$0$.
     2019The expression has type ©const int *©, with a specialization conversion applied to ©0©.
    20392020
    20402021
     
    20472028         \nonterm{assignment-expression}
    20482029\lhs{assignment-operator} one of
    2049 \rhs \lstinline$=$\ \ \lstinline$*=$\ \ \lstinline$/=$\ \ \lstinline$%=$\ \ \lstinline$+=$\ \ \lstinline$-=$\ \ 
    2050          \lstinline$<<=$\ \ \lstinline$>>=$\ \ \lstinline$&=$\ \ \lstinline$^=$\ \ \lstinline$|=$
     2030\rhs ©=©\ \ ©*=©\ \ ©/=©\ \ ©%=©\ \ ©+=©\ \ ©-=©\ \ ©<<=©\ \ ©>>=©\ \ ©&=©\ \ ©^=©\ \ ©|=©
    20512031\end{syntax}
    20522032
    20532033\rewriterules
    2054 Let ``\(\leftarrow\)'' be any of the assignment operators.
     2034Let ``©<-©'' be any of the assignment operators.
    20552035Then
    2056 \use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}
    2057 \use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}
    2058 \begin{lstlisting}
    2059 a @$\leftarrow$@ b @\rewrite@ ?@$\leftarrow$@?( &( a ), b )
     2036\use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}\use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}
     2037\begin{lstlisting}
     2038a <- b => ?<-?( &( a ), b )
    20602039\end{lstlisting}
    20612040
    20622041\semantics
    20632042Each interpretation of the left operand of an assignment expression is considered separately.
    2064 For each interpretation that is a bit-field or is declared with the \lstinline$register$ storage class specifier, the expression has one valid interpretation, with the type of the left operand.
     2043For each interpretation that is a bit-field or is declared with the ©register© storage class specifier, the expression has one valid interpretation, with the type of the left operand.
    20652044The right operand is cast to that type, and the assignment expression is ambiguous if either operand is.
    20662045For the remaining interpretations, the expression is rewritten, and the interpretations of the assignment expression are the interpretations of the corresponding function call.
     
    22952274\end{lstlisting}
    22962275\begin{rationale}
    2297 The pattern of overloadings for simple assignment resembles that of pointer increment and decrement, except that the polymorphic pointer assignment functions declare a \lstinline$dtype$ parameter, instead of a \lstinline$type$ parameter, because the left operand may be a pointer to an incomplete type.
    2298 \end{rationale}
    2299 
    2300 For every complete structure or union type \lstinline$S$ there exist
     2276The pattern of overloadings for simple assignment resembles that of pointer increment and decrement, except that the polymorphic pointer assignment functions declare a ©dtype© parameter, instead of a ©type© parameter, because the left operand may be a pointer to an incomplete type.
     2277\end{rationale}
     2278
     2279For every complete structure or union type ©S© there exist
    23012280% Don't use predefined: keep this out of prelude.cf.
    23022281\begin{lstlisting}
     
    23042283\end{lstlisting}
    23052284
    2306 For every extended integer type \lstinline$X$ there exist
     2285For every extended integer type ©X© there exist
    23072286% Don't use predefined: keep this out of prelude.cf.
    23082287\begin{lstlisting}
     
    23102289\end{lstlisting}
    23112290
    2312 For every complete enumerated type \lstinline$E$ there exist
     2291For every complete enumerated type ©E© there exist
    23132292% Don't use predefined: keep this out of prelude.cf.
    23142293\begin{lstlisting}
     
    23162295\end{lstlisting}
    23172296\begin{rationale}
    2318 The right-hand argument is \lstinline$int$ because enumeration constants have type \lstinline$int$.
     2297The right-hand argument is ©int© because enumeration constants have type ©int©.
    23192298\end{rationale}
    23202299
     
    25772556\end{lstlisting}
    25782557
    2579 For every extended integer type \lstinline$X$ there exist
     2558For every extended integer type ©X© there exist
    25802559% Don't use predefined: keep this out of prelude.cf.
    25812560\begin{lstlisting}
     
    25922571\end{lstlisting}
    25932572
    2594 For every complete enumerated type \lstinline$E$ there exist
     2573For every complete enumerated type ©E© there exist
    25952574% Don't use predefined: keep this out of prelude.cf.
    25962575\begin{lstlisting}
     
    26132592\lhs{expression}
    26142593\rhs \nonterm{assignment-expression}
    2615 \rhs \nonterm{expression} \lstinline$,$ \nonterm{assignment-expression}
     2594\rhs \nonterm{expression} ©,© \nonterm{assignment-expression}
    26162595\end{syntax}
    26172596
    26182597\semantics
    2619 In the comma expression ``\lstinline$a, b$'', the first operand is interpreted as
    2620 ``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}.
     2598In the comma expression ``©a, b©'', the first operand is interpreted as ``©( void )(a)©'', which shall be unambiguous\index{ambiguous interpretation}.
    26212599The interpretations of the expression are the interpretations of the second operand.
    26222600
     
    26532631{ ... }
    26542632\end{lstlisting}
    2655 Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in the second.
     2633Without the rule, ©Complex© would be a type in the first case, and a parameter name in the second.
    26562634\end{rationale}
    26572635
     
    26792657\examples
    26802658\begin{lstlisting}
    2681 struct point {@\impl{point}@
     2659struct point {§\impl{point}§
    26822660        int x, y;
    26832661};
    2684 struct color_point {@\impl{color_point}@
     2662struct color_point {§\impl{color_point}§
    26852663        enum { RED, BLUE, GREEN } color;
    26862664        struct point;
     
    26892667cp.x = 0;
    26902668cp.color = RED;
    2691 struct literal {@\impl{literal}@
     2669struct literal {§\impl{literal}§
    26922670        enum { NUMBER, STRING } tag;
    26932671        union {
     
    27102688\begin{syntax}
    27112689\lhs{forall-specifier}
    2712 \rhs \lstinline$forall$ \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
     2690\rhs ©forall© ©(© \nonterm{type-parameter-list} ©)©
    27132691\end{syntax}
    27142692
     
    27222700} mkPair( T, T ); // illegal
    27232701\end{lstlisting}
    2724 If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the members' type be?
     2702If an instance of ©struct Pair© was declared later in the current scope, what would the members' type be?
    27252703\end{rationale}
    27262704\end{comment}
     
    27292707The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type identifiers, function and object identifiers with \Index{no linkage}.
    27302708
    2731 If, in the declaration ``\lstinline$T D$'', \lstinline$T$ contains \nonterm{forall-specifier}s and
    2732 \lstinline$D$ has the form
    2733 \begin{lstlisting}
    2734 D( @\normalsize\nonterm{parameter-type-list}@ )
    2735 \end{lstlisting} then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred parameter} of the function declarator if and only if it is not an inferred parameter of a function declarator in \lstinline$D$, and it is used in the type of a parameter in the following
    2736 \nonterm{type-parameter-list} or it and an inferred parameter are used as arguments of a
    2737 \Index{specification} in one of the \nonterm{forall-specifier}s.
     2709If, in the declaration ``©T D©'', ©T© contains \nonterm{forall-specifier}s and ©D© has the form
     2710\begin{lstlisting}
     2711D( §\normalsize\nonterm{parameter-type-list}§ )
     2712\end{lstlisting} then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred parameter} of the function declarator if and only if it is not an inferred parameter of a function declarator in ©D©, and it is used in the type of a parameter in the following
     2713\nonterm{type-parameter-list} or it and an inferred parameter are used as arguments of a \Index{specification} in one of the \nonterm{forall-specifier}s.
    27382714The identifiers declared by assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s of that function declarator.
    27392715
     
    27442720If this restriction were lifted, it would be possible to write
    27452721\begin{lstlisting}
    2746 forall( otype T ) T * alloc( void );@\use{alloc}@ int *p = alloc();
    2747 \end{lstlisting}
    2748 Here \lstinline$alloc()$ would receive \lstinline$int$ as an inferred argument, and return an
    2749 \lstinline$int *$.
    2750 In general, if a call to \lstinline$alloc()$ is a subexpression of an expression involving polymorphic functions and overloaded identifiers, there could be considerable distance between the call and the subexpression that causes \lstinline$T$ to be bound.
    2751 
    2752 With the current restriction, \lstinline$alloc()$ must be given an argument that determines
    2753 \lstinline$T$:
    2754 \begin{lstlisting}
    2755 forall( otype T ) T * alloc( T initial_value );@\use{alloc}@
     2722forall( otype T ) T * alloc( void );§\use{alloc}§ int *p = alloc();
     2723\end{lstlisting}
     2724Here ©alloc()© would receive ©int© as an inferred argument, and return an ©int *©.
     2725In general, if a call to ©alloc()© is a subexpression of an expression involving polymorphic functions and overloaded identifiers, there could be considerable distance between the call and the subexpression that causes ©T© to be bound.
     2726
     2727With the current restriction, ©alloc()© must be given an argument that determines ©T©:
     2728\begin{lstlisting}
     2729forall( otype T ) T * alloc( T initial_value );§\use{alloc}§
    27562730\end{lstlisting}
    27572731\end{rationale}
     
    27592733
    27602734If a function declarator is part of a function definition, its inferred parameters and assertion parameters have \Index{block scope};
    2761 otherwise, identifiers declared by assertions have a
    2762 \define{declaration scope}, which terminates at the end of the \nonterm{declaration}.
     2735otherwise, identifiers declared by assertions have a \define{declaration scope}, which terminates at the end of the \nonterm{declaration}.
    27632736
    27642737A function type that has at least one inferred parameter is a \define{polymorphic function} type.
     
    27692742Let $f$ and $g$ be two polymorphic function types with the same number of inferred parameters, and let $f_i$ and $g_i$ be the inferred parameters of $f$ and $g$ in their order of occurance in the function types' \nonterm{parameter-type-list}s.
    27702743Let $f'$ be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$.
    2771 Then $f$ and $g$ are
    2772 \Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same identifier and compatible type, and vice versa.
     2744Then $f$ and $g$ are \Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same identifier and compatible type, and vice versa.
    27732745
    27742746\examples
     
    27782750forall( otype T ) T fT( T );
    27792751\end{lstlisting}
    2780 \lstinline$fi()$ takes an \lstinline$int$ and returns an \lstinline$int$. \lstinline$fT()$ takes a
    2781 \lstinline$T$ and returns a \lstinline$T$, for any type \lstinline$T$.
     2752©fi()© takes an ©int© and returns an ©int©. ©fT()© takes a ©T© and returns a ©T©, for any type ©T©.
    27822753\begin{lstlisting}
    27832754int (*pfi )( int ) = fi;
    27842755forall( otype T ) T (*pfT )( T ) = fT;
    27852756\end{lstlisting}
    2786 \lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not polymorphic, but the function it points at is.
     2757©pfi© and ©pfT© are pointers to functions. ©pfT© is not polymorphic, but the function it points at is.
    27872758\begin{lstlisting}
    27882759int (*fvpfi( void ))( int ) {
     
    27932764}
    27942765\end{lstlisting}
    2795 \lstinline$fvpfi()$ and \lstinline$fvpfT()$ are functions taking no arguments and returning pointers to functions. \lstinline$fvpfT()$ is monomorphic, but the function that its return value points at is polymorphic.
     2766©fvpfi()© and ©fvpfT()© are functions taking no arguments and returning pointers to functions. ©fvpfT()© is monomorphic, but the function that its return value points at is polymorphic.
    27962767\begin{lstlisting}
    27972768forall( otype T ) int ( *fTpfi( T ) )( int );
     
    27992770forall( otype T, otype U ) U ( *fTpfU( T ) )( U );
    28002771\end{lstlisting}
    2801 \lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function taking an integer and returning an integer.
    2802 It could return \lstinline$pfi$. \lstinline$fTpfT()$ is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning
    2803 \lstinline$T$, where \lstinline$T$ is an inferred parameter of \lstinline$fTpfT()$.
    2804 For instance, in the expression ``\lstinline$fTpfT(17)$'', \lstinline$T$ is inferred to be \lstinline$int$, and the returned value would have type \lstinline$int ( * )( int )$. ``\lstinline$fTpfT(17)(13)$'' and
    2805 ``\lstinline$fTpfT("yes")("no")$'' are legal, but ``\lstinline$fTpfT(17)("no")$'' is illegal.
    2806 \lstinline$fTpfU()$ is polymorphic ( in type \lstinline$T$), and returns a pointer to a function that is polymorphic ( in type \lstinline$U$). ``\lstinline$f5(17)("no")$'' is a legal expression of type
    2807 \lstinline$char *$.
     2772©fTpfi()© is a polymorphic function that returns a pointer to a monomorphic function taking an integer and returning an integer.
     2773It could return ©pfi©. ©fTpfT()© is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning
     2774©T©, where ©T© is an inferred parameter of ©fTpfT()©.
     2775For instance, in the expression ``©fTpfT(17)©'', ©T© is inferred to be ©int©, and the returned value would have type ©int ( * )( int )©. ``©fTpfT(17)(13)©'' and ``©fTpfT("yes")("no")©'' are legal, but ``©fTpfT(17)("no")©'' is illegal.
     2776©fTpfU()© is polymorphic ( in type ©T©), and returns a pointer to a function that is polymorphic ( in type ©U©). ``©f5(17)("no")©'' is a legal expression of type ©char *©.
    28082777\begin{lstlisting}
    28092778forall( otype T, otype U, otype V ) U * f( T *, U, V * const );
    28102779forall( otype U, otype V, otype W ) U * g( V *, U, W * const );
    28112780\end{lstlisting}
    2812 The functions \lstinline$f()$ and \lstinline$g()$ have compatible types.
     2781The functions ©f()© and ©g()© have compatible types.
    28132782Let \(f\) and \(g\) be their types;
    2814 then \(f_1\) = \lstinline$T$, \(f_2\) = \lstinline$U$, \(f_3\) = \lstinline$V$, \(g_1\)
    2815 = \lstinline$V$, \(g_2\) = \lstinline$U$, and \(g_3\) = \lstinline$W$.
     2783then \(f_1\) = ©T©, \(f_2\) = ©U©, \(f_3\) = ©V©, \(g_1\)
     2784= ©V©, \(g_2\) = ©U©, and \(g_3\) = ©W©.
    28162785Replacing every \(f_i\) by \(g_i\) in \(f\) gives
    28172786\begin{lstlisting}
     
    28192788\end{lstlisting} which has a return type and parameter list that is compatible with \(g\).
    28202789\begin{rationale}
    2821 The word ``\lstinline$type$'' in a forall specifier is redundant at the moment, but I want to leave room for inferred parameters of ordinary types in case parameterized types get added one day.
     2790The word ``©type©'' in a forall specifier is redundant at the moment, but I want to leave room for inferred parameters of ordinary types in case parameterized types get added one day.
    28222791
    28232792Even without parameterized types, I might try to allow
     
    28452814\subsection{Type qualifiers}
    28462815
    2847 \CFA defines a new type qualifier \lstinline$lvalue$\impl{lvalue}\index{lvalue}.
     2816\CFA defines a new type qualifier ©lvalue©\impl{lvalue}\index{lvalue}.
    28482817\begin{syntax}
    28492818\oldlhs{type-qualifier}
    2850 \rhs \lstinline$lvalue$
     2819\rhs ©lvalue©
    28512820\end{syntax}
    28522821
    28532822\constraints
    2854 \lstinline$restrict$\index{register@{\lstinline$restrict$}} Types other than type parameters and pointer types whose referenced type is an object type shall not be restrict-qualified.
     2823\Indexc{restrict} Types other than type parameters and pointer types whose referenced type is an object type shall not be restrict-qualified.
    28552824
    28562825\semantics
    2857 An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not establish any special semantics in that case.
     2826An object's type may be a restrict-qualified type parameter.
     2827©restrict© does not establish any special semantics in that case.
    28582828
    28592829\begin{rationale}
     
    28612831\end{rationale}
    28622832
    2863 \lstinline$lvalue$ may be used to qualify the return type of a function type.
    2864 Let \lstinline$T$ be an unqualified version of a type;
    2865 then the result of calling a function with return type
    2866 \lstinline$lvalue T$ is a \Index{modifiable lvalue} of type \lstinline$T$.
    2867 \lstinline$const$\use{const} and \lstinline$volatile$\use{volatile} qualifiers may also be added to indicate that the function result is a constant or volatile lvalue.
    2868 \begin{rationale}
    2869 The \lstinline$const$ and \lstinline$volatile$ qualifiers can only be sensibly used to qualify the return type of a function if the \lstinline$lvalue$ qualifier is also used.
     2833©lvalue© may be used to qualify the return type of a function type.
     2834Let ©T© be an unqualified version of a type;
     2835then the result of calling a function with return type ©lvalue T© is a \Index{modifiable lvalue} of type ©T©.
     2836©const©\use{const} and ©volatile©\use{volatile} qualifiers may also be added to indicate that the function result is a constant or volatile lvalue.
     2837\begin{rationale}
     2838The ©const© and ©volatile© qualifiers can only be sensibly used to qualify the return type of a function if the ©lvalue© qualifier is also used.
    28702839\end{rationale}
    28712840
     
    28742843
    28752844\begin{rationale}
    2876 \lstinline$lvalue$ provides some of the functionality of {\CC}'s ``\lstinline$T&$'' ( reference to object of type \lstinline$T$) type.
     2845©lvalue© provides some of the functionality of {\CC}'s ``©T&©'' ( reference to object of type ©T©) type.
    28772846Reference types have four uses in {\CC}.
    28782847\begin{itemize}
    28792848\item
    2880 They are necessary for user-defined operators that return lvalues, such as ``subscript'' and
    2881 ``dereference''.
    2882 
    2883 \item
    2884 A reference can be used to define an alias for a complicated lvalue expression, as a way of getting some of the functionality of the Pascal \lstinline$with$ statement.
     2849They are necessary for user-defined operators that return lvalues, such as ``subscript'' and ``dereference''.
     2850
     2851\item
     2852A reference can be used to define an alias for a complicated lvalue expression, as a way of getting some of the functionality of the Pascal ©with© statement.
    28852853The following {\CC} code gives an example.
    28862854\begin{lstlisting}
     
    28952863A reference parameter can be used to allow a function to modify an argument without forcing the caller to pass the address of the argument.
    28962864This is most useful for user-defined assignment operators.
    2897 In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and the two expressions
     2865In {\CC}, plain assignment is done by a function called ``©operator=©'', and the two expressions
    28982866\begin{lstlisting}
    28992867a = b;
    29002868operator=( a, b );
    29012869\end{lstlisting} are equivalent.
    2902 If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first parameter of \lstinline$operator=$ must have type ``\lstinline$T&$''.
    2903 It cannot have type
    2904 \lstinline$T$, because then assignment couldn't alter the variable, and it can't have type
    2905 ``\lstinline$T *$'', because the assignment would have to be written ``\lstinline$&a = b;$''.
    2906 
    2907 In the case of user-defined operators, this could just as well be handled by using pointer types and by changing the rewrite rules so that ``\lstinline$a = b;$'' is equivalent to
    2908 ``\lstinline$operator=(&( a), b )$''.
    2909 Reference parameters of ``normal'' functions are Bad Things, because they remove a useful property of C function calls: an argument can only be modified by a function if it is preceded by ``\lstinline$&$''.
     2870If ©a© and ©b© are of type ©T©, then the first parameter of ©operator=© must have type ``©T&©''.
     2871It cannot have type ©T©, because then assignment couldn't alter the variable, and it can't have type ``©T *©'', because the assignment would have to be written ``©&a = b;©''.
     2872
     2873In the case of user-defined operators, this could just as well be handled by using pointer types and by changing the rewrite rules so that ``©a = b;©'' is equivalent to ``©operator=(&( a), b )©''.
     2874Reference parameters of ``normal'' functions are Bad Things, because they remove a useful property of C function calls: an argument can only be modified by a function if it is preceded by ``©&©''.
    29102875
    29112876\item
    29122877References to \Index{const-qualified} types can be used instead of value parameters.  Given the
    2913 {\CC} function call ``\lstinline$fiddle( a_thing )$'', where the type of \lstinline$a_thing$ is
    2914 \lstinline$Thing$, the type of \lstinline$fiddle$ could be either of
     2878{\CC} function call ``©fiddle( a_thing )©'', where the type of ©a_thing© is
     2879©Thing©, the type of ©fiddle© could be either of
    29152880\begin{lstlisting}
    29162881void fiddle( Thing );
    29172882void fiddle( const Thing & );
    29182883\end{lstlisting}
    2919 If the second form is used, then constructors and destructors are not invoked to create a temporary variable at the call site ( and it is bad style for the caller to make any assumptions about such things), and within \lstinline$fiddle$ the parameter is subject to the usual problems caused by aliases.
    2920 The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too large or their constructors or destructors are too expensive.
     2884If the second form is used, then constructors and destructors are not invoked to create a temporary variable at the call site ( and it is bad style for the caller to make any assumptions about such things), and within ©fiddle© the parameter is subject to the usual problems caused by aliases.
     2885The reference form might be chosen for efficiency's sake if ©Thing©s are too large or their constructors or destructors are too expensive.
    29212886An implementation may switch between them without causing trouble for well-behaved clients.
    29222887This leaves the implementor to define ``too large'' and ``too expensive''.
     
    29262891void fiddle( const volatile Thing );
    29272892\end{lstlisting} with call-by-reference.
    2928 Since it knows all about the size of \lstinline$Thing$s and the parameter passing mechanism, it should be able to come up with a better definition of ``too large'', and may be able to make a good guess at ``too expensive''.
     2893Since it knows all about the size of ©Thing©s and the parameter passing mechanism, it should be able to come up with a better definition of ``too large'', and may be able to make a good guess at ``too expensive''.
    29292894\end{itemize}
    29302895
     
    29462911\begin{syntax}
    29472912\lhs{spec-definition}
    2948 \rhs \lstinline$spec$ \nonterm{identifier}
    2949         \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
    2950         \lstinline${$ \nonterm{spec-declaration-list}\opt \lstinline$}$
     2913\rhs ©spec© \nonterm{identifier}
     2914        ©(© \nonterm{type-parameter-list} ©)©
     2915        ©{© \nonterm{spec-declaration-list}\opt ©}©
    29512916\lhs{spec-declaration-list}
    2952 \rhs \nonterm{spec-declaration} \lstinline$;$
    2953 \rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} \lstinline$;$
     2917\rhs \nonterm{spec-declaration} ©;©
     2918\rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} ©;©
    29542919\lhs{spec-declaration}
    29552920\rhs \nonterm{specifier-qualifier-list} \nonterm{declarator-list}
    29562921\lhs{declarator-list}
    29572922\rhs \nonterm{declarator}
    2958 \rhs \nonterm{declarator-list} \lstinline$,$ \nonterm{declarator}
     2923\rhs \nonterm{declarator-list} ©,© \nonterm{declarator}
    29592924\end{syntax}
    29602925\begin{rationale}
     
    29782943\rhs \nonterm{assertion-list} \nonterm{assertion}
    29792944\lhs{assertion}
    2980 \rhs \lstinline$|$ \nonterm{identifier} \lstinline$($ \nonterm{type-name-list} \lstinline$)$
    2981 \rhs \lstinline$|$ \nonterm{spec-declaration}
     2945\rhs ©|© \nonterm{identifier} ©(© \nonterm{type-name-list} ©)©
     2946\rhs ©|© \nonterm{spec-declaration}
    29822947\lhs{type-name-list}
    29832948\rhs \nonterm{type-name}
    2984 \rhs \nonterm{type-name-list} \lstinline$,$ \nonterm{type-name}
     2949\rhs \nonterm{type-name-list} ©,© \nonterm{type-name}
    29852950\end{syntax}
    29862951
     
    29892954The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}.
    29902955If the
    2991 \nonterm{type-parameter} uses type-class \lstinline$type$\use{type}, the argument shall be the type name of an \Index{object type};
    2992 if it uses \lstinline$dtype$, the argument shall be the type name of an object type or an \Index{incomplete type};
    2993 and if it uses \lstinline$ftype$, the argument shall be the type name of a \Index{function type}.
     2956\nonterm{type-parameter} uses type-class ©type©\use{type}, the argument shall be the type name of an \Index{object type};
     2957if it uses ©dtype©, the argument shall be the type name of an object type or an \Index{incomplete type};
     2958and if it uses ©ftype©, the argument shall be the type name of a \Index{function type}.
    29942959
    29952960\semantics
    2996 An \define{assertion} is a declaration of a collection of objects and functions, called
    2997 \define{assertion parameters}.
     2961An \define{assertion} is a declaration of a collection of objects and functions, called \define{assertion parameters}.
    29982962
    29992963The assertion parameters produced by an assertion that applies the name of a specification to type arguments are found by taking the declarations specified in the specification and treating each of the specification's parameters as a synonym for the corresponding \nonterm{type-name} argument.
     
    30042968\examples
    30052969\begin{lstlisting}
    3006 forall( otype T | T ?*?( T, T ))@\use{?*?}@
    3007 T square( T val ) {@\impl{square}@
     2970forall( otype T | T ?*?( T, T ))§\use{?*?}§
     2971T square( T val ) {§\impl{square}§
    30082972        return val + val;
    30092973}
    3010 trait summable( otype T ) {@\impl{summable}@
    3011         T ?+=?( T *, T );@\use{?+=?}@
    3012         const T 0;@\use{0}@
     2974trait summable( otype T ) {§\impl{summable}§
     2975        T ?+=?( T *, T );§\use{?+=?}§
     2976        const T 0;§\use{0}§
    30132977};
    3014 trait list_of( otype List, otype Element ) {@\impl{list_of}@
     2978trait list_of( otype List, otype Element ) {§\impl{list_of}§
    30152979        Element car( List );
    30162980        List cdr( List );
     
    30212985trait sum_list( otype List, otype Element | summable( Element ) | list_of( List, Element ) ) {};
    30222986\end{lstlisting}
    3023 \lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added up.
    3024 The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion parameters
     2987©sum_list© contains seven declarations, which describe a list whose elements can be added up.
     2988The assertion ``©|sum_list( i_list, int )©''\use{sum_list} produces the assertion parameters
    30252989\begin{lstlisting}
    30262990int ?+=?( int *, int );
     
    30393003\lhs{type-parameter-list}
    30403004\rhs \nonterm{type-parameter}
    3041 \rhs \nonterm{type-parameter-list} \lstinline$,$ \nonterm{type-parameter}
     3005\rhs \nonterm{type-parameter-list} ©,© \nonterm{type-parameter}
    30423006\lhs{type-parameter}
    30433007\rhs \nonterm{type-class} \nonterm{identifier} \nonterm{assertion-list}\opt
    30443008\lhs{type-class}
    3045 \rhs \lstinline$type$
    3046 \rhs \lstinline$dtype$
    3047 \rhs \lstinline$ftype$
     3009\rhs ©type©
     3010\rhs ©dtype©
     3011\rhs ©ftype©
    30483012\lhs{type-declaration}
    3049 \rhs \nonterm{storage-class-specifier}\opt \lstinline$type$ \nonterm{type-declarator-list} \verb|;|
     3013\rhs \nonterm{storage-class-specifier}\opt ©type© \nonterm{type-declarator-list} \verb|;|
    30503014\lhs{type-declarator-list}
    30513015\rhs \nonterm{type-declarator}
    3052 \rhs \nonterm{type-declarator-list} \lstinline$,$ \nonterm{type-declarator}
     3016\rhs \nonterm{type-declarator-list} ©,© \nonterm{type-declarator}
    30533017\lhs{type-declarator}
    3054 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt \lstinline$=$ \nonterm{type-name}
     3018\rhs \nonterm{identifier} \nonterm{assertion-list}\opt ©=© \nonterm{type-name}
    30553019\rhs \nonterm{identifier} \nonterm{assertion-list}\opt
    30563020\end{syntax}
     
    30633027
    30643028An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}.
    3065 Identifiers declared with type-class \lstinline$type$\use{type} are \Index{object type}s;
    3066 those declared with type-class
    3067 \lstinline$dtype$\use{dtype} are \Index{incomplete type}s;
    3068 and those declared with type-class
    3069 \lstinline$ftype$\use{ftype} are \Index{function type}s.
     3029Identifiers declared with type-class ©type©\use{type} are \Index{object type}s;
     3030those declared with type-class ©dtype©\use{dtype} are \Index{incomplete type}s;
     3031and those declared with type-class ©ftype©\use{ftype} are \Index{function type}s.
    30703032The identifier has \Index{block scope} that terminates at the end of the \nonterm{spec-declaration-list} or polymorphic function that contains the \nonterm{type-parameter}.
    30713033
     
    30753037Within the scope of the declaration, \Index{implicit conversion}s can be performed between the defined type and the implementation type, and between pointers to the defined type and pointers to the implementation type.
    30763038
    3077 A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or with storage-class specifier \lstinline$static$\use{static} defines an \Index{incomplete type}.
    3078 If a
    3079 \Index{translation unit} or \Index{block} contains one or more such declarations for an identifier, it must contain exactly one definition of the identifier ( but not in an enclosed block, which would define a new type known only within that block).
     3039A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or with storage-class specifier ©static©\use{static} defines an \Index{incomplete type}.
     3040If a \Index{translation unit} or \Index{block} contains one or more such declarations for an identifier, it must contain exactly one definition of the identifier ( but not in an enclosed block, which would define a new type known only within that block).
    30803041\begin{rationale}
    30813042Incomplete type declarations allow compact mutually-recursive types.
     
    30943055\end{rationale}
    30953056
    3096 A type declaration without an initializer and with \Index{storage-class specifier}
    3097 \lstinline$extern$\use{extern} is an \define{opaque type declaration}.
    3098 Opaque types are
    3099 \Index{object type}s.
     3057A type declaration without an initializer and with \Index{storage-class specifier} ©extern©\use{extern} is an \define{opaque type declaration}.
     3058Opaque types are \Index{object type}s.
    31003059An opaque type is not a \nonterm{constant-expression};
    3101 neither is a structure or union that has a member whose type is not a \nonterm{constant-expression}.  Every other
    3102 \Index{object type} is a \nonterm{constant-expression}.
     3060neither is a structure or union that has a member whose type is not a \nonterm{constant-expression}.
     3061Every other \Index{object type} is a \nonterm{constant-expression}.
    31033062Objects with static storage duration shall be declared with a type that is a \nonterm{constant-expression}.
    31043063\begin{rationale}
     
    31103069\end{rationale}
    31113070
    3112 An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a value of \Index{type-class} \lstinline$dtype$.
    3113 An object type\index{object types} which is not a qualified version of a type is a value of type-classes \lstinline$type$ and \lstinline$dtype$.
    3114 A
    3115 \Index{function type} is a value of type-class \lstinline$ftype$.
     3071An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a value of \Index{type-class} ©dtype©.
     3072An object type\index{object types} which is not a qualified version of a type is a value of type-classes ©type© and ©dtype©.
     3073A \Index{function type} is a value of type-class ©ftype©.
    31163074\begin{rationale}
    31173075Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which omits the identifier being declared.
     
    31223080
    31233081Type qualifiers are a weak point of C's type system.
    3124 Consider the standard library function
    3125 \lstinline$strchr()$ which, given a string and a character, returns a pointer to the first occurrence of the character in the string.
    3126 \begin{lstlisting}
    3127 char *strchr( const char *s, int c ) {@\impl{strchr}@
     3082Consider the standard library function ©strchr()© which, given a string and a character, returns a pointer to the first occurrence of the character in the string.
     3083\begin{lstlisting}
     3084char *strchr( const char *s, int c ) {§\impl{strchr}§
    31283085        char real_c = c; // done because c was declared as int.
    31293086        for ( ; *s != real_c; s++ )
     
    31323089}
    31333090\end{lstlisting}
    3134 The parameter \lstinline$s$ must be \lstinline$const char *$, because \lstinline$strchr()$ might be used to search a constant string, but the return type must be \lstinline$char *$, because the result might be used to modify a non-constant string.
    3135 Hence the body must perform a cast, and ( even worse)
    3136 \lstinline$strchr()$ provides a type-safe way to attempt to modify constant strings.
    3137 What is needed is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has exactly the same qualifiers.
     3091The parameter ©s© must be ©const char *©, because ©strchr()© might be used to search a constant string, but the return type must be ©char *©, because the result might be used to modify a non-constant string.
     3092Hence the body must perform a cast, and ( even worse) ©strchr()© provides a type-safe way to attempt to modify constant strings.
     3093What is needed is some way to say that ©s©'s type might contain qualifiers, and the result type has exactly the same qualifiers.
    31383094Polymorphic functions do not provide a fix for this deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of type values.
    3139 Instead, overloading can be used to define \lstinline$strchr()$ for each combination of qualifiers.
     3095Instead, overloading can be used to define ©strchr()© for each combination of qualifiers.
    31403096\end{rationale}
    31413097
     
    31613117};
    31623118\end{lstlisting}
    3163 Without this restriction, \CFA might require ``module initialization'' code ( since
    3164 \lstinline$Rational$ has external linkage, it must be created before any other translation unit instantiates it), and would force an ordering on the initialization of the translation unit that defines \lstinline$Huge$ and the translation that declares \lstinline$Rational$.
     3119Without this restriction, \CFA might require ``module initialization'' code ( since ©Rational© has external linkage, it must be created before any other translation unit instantiates it), and would force an ordering on the initialization of the translation unit that defines ©Huge© and the translation that declares ©Rational©.
    31653120
    31663121A benefit of the restriction is that it prevents the declaration in separate translation units of types that contain each other, which would be hard to prevent otherwise.
     
    31683123//  File a.c:
    31693124        extern type t1;
    3170         type t2 = struct { t1 f1; ... } // illegal
     3125        type t2 = struct { t1 f1; ... } // illegal
    31713126//  File b.c:
    31723127        extern type t2;
    3173         type t1 = struct { t2 f2; ... } // illegal
     3128        type t1 = struct { t2 f2; ... } // illegal
    31743129\end{lstlisting}
    31753130\end{rationale}
     
    31793134\nonterm{struct-declaration}, type declarations can not be structure members.
    31803135The form of
    3181 \nonterm{type-declaration} forbids arrays of, pointers to, and functions returning \lstinline$type$.
     3136\nonterm{type-declaration} forbids arrays of, pointers to, and functions returning ©type©.
    31823137Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued expressions.
    31833138It also side-steps the problem of type-valued expressions producing different values in different declarations.
     
    31943149#include <stdlib.h>
    31953150T * new( otype T ) { return ( T * )malloc( sizeof( T) ); };
    3196 @\ldots@ int * ip = new( int );
    3197 \end{lstlisting}
    3198 This looks sensible, but \CFA's declaration-before-use rules mean that ``\lstinline$T$'' in the function body refers to the parameter, but the ``\lstinline$T$'' in the return type refers to the meaning of \lstinline$T$ in the scope that contains \lstinline$new$;
     3151... int * ip = new( int );
     3152\end{lstlisting}
     3153This looks sensible, but \CFA's declaration-before-use rules mean that ``©T©'' in the function body refers to the parameter, but the ``©T©'' in the return type refers to the meaning of ©T© in the scope that contains ©new©;
    31993154it could be undefined, or a type name, or a function or variable name.
    32003155Nothing good can result from such a situation.
     
    32133168f2( v2 );
    32143169\end{lstlisting}
    3215 \lstinline$V1$ is passed by value, so \lstinline$f1()$'s assignment to \lstinline$a[0]$ does not modify v1.  \lstinline$V2$ is converted to a pointer, so \lstinline$f2()$ modifies \lstinline$v2[0]$.
     3170©V1© is passed by value, so ©f1()©'s assignment to ©a[0]© does not modify v1.  ©V2© is converted to a pointer, so ©f2()© modifies ©v2[0]©.
    32163171
    32173172A translation unit containing the declarations
    32183173\begin{lstlisting}
    3219 extern type Complex;@\use{Complex}@ // opaque type declaration
    3220 extern float abs( Complex );@\use{abs}@
    3221 \end{lstlisting} can contain declarations of complex numbers, which can be passed to \lstinline$abs$.
    3222 Some other translation unit must implement \lstinline$Complex$ and \lstinline$abs$.
     3174extern type Complex;§\use{Complex}§ // opaque type declaration
     3175extern float abs( Complex );§\use{abs}§
     3176\end{lstlisting} can contain declarations of complex numbers, which can be passed to ©abs©.
     3177Some other translation unit must implement ©Complex© and ©abs©.
    32233178That unit might contain the declarations
    32243179\begin{lstlisting}
    3225 otype Complex = struct { float re, im; };@\impl{Complex}@
    3226 Complex cplx_i = { 0.0, 1.0 };@\impl{cplx_i}@
    3227 float abs( Complex c ) {@\impl{abs( Complex )}@
     3180otype Complex = struct { float re, im; };§\impl{Complex}§
     3181Complex cplx_i = { 0.0, 1.0 };§\impl{cplx_i}§
     3182float abs( Complex c ) {§\impl{abs( Complex )}§
    32283183        return sqrt( c.re * c.re + c.im * c.im );
    32293184}
    32303185\end{lstlisting}
    3231 Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can be retrieved.
    3232 
    3233 \begin{lstlisting}
    3234 otype Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight.
    3235 Time_of_day ?+?( Time_of_day t1, int seconds ) {@\impl{?+?}@
     3186Note that ©c© is implicitly converted to a ©struct© so that its components can be retrieved.
     3187
     3188\begin{lstlisting}
     3189otype Time_of_day = int;§\impl{Time_of_day}§ // seconds since midnight.
     3190Time_of_day ?+?( Time_of_day t1, int seconds ) {§\impl{?+?}§
    32363191        return (( int)t1 + seconds ) % 86400;
    32373192}
    32383193\end{lstlisting}
    3239 \lstinline$t1$ must be cast to its implementation type to prevent infinite recursion.
     3194©t1© must be cast to its implementation type to prevent infinite recursion.
    32403195
    32413196\begin{rationale}
    32423197Within the scope of a type definition, an instance of the type can be viewed as having that type or as having the implementation type.
    3243 In the \lstinline$Time_of_day$ example, the difference is important.
     3198In the ©Time_of_day© example, the difference is important.
    32443199Different languages have treated the distinction between the abstraction and the implementation in different ways.
    32453200\begin{itemize}
    32463201\item
    32473202Inside a Clu cluster \cite{CLU}, the declaration of an instance states which view applies.
    3248 Two primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views.
     3203Two primitives called ©up© and ©down© can be used to convert between the views.
    32493204\item
    32503205The Simula class \cite{SIMULA87} is essentially a record type.
    32513206Since the only operations on a record are member selection and assignment, which can not be overloaded, there is never any ambiguity as to whether the abstraction or the implementation view is being used.
    32523207In {\CC}
    3253 \cite{C++}, operations on class instances include assignment and ``\lstinline$&$'', which can be overloaded.
     3208\cite{C++}, operations on class instances include assignment and ``©&©'', which can be overloaded.
    32543209A ``scope resolution'' operator can be used inside the class to specify whether the abstract or implementation version of the operation should be used.
    32553210\item
     
    32643219In this case, explicit conversions between the derived type and the old type can be used.
    32653220\end{itemize}
    3266 \CFA's rules are like Clu's, except that implicit conversions and conversion costs allow it to do away with most uses of \lstinline$up$ and \lstinline$down$.
     3221\CFA's rules are like Clu's, except that implicit conversions and conversion costs allow it to do away with most uses of ©up© and ©down©.
    32673222\end{rationale}
    32683223
     
    32703225\subsubsection{Default functions and objects}
    32713226
    3272 A declaration\index{type declaration} of a type identifier \lstinline$T$ with type-class
    3273 \lstinline$type$ implicitly declares a \define{default assignment} function
    3274 \lstinline$T ?=?( T *, T )$\use{?=?}, with the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$.
     3227A declaration\index{type declaration} of a type identifier ©T© with type-class ©type© implicitly declares a \define{default assignment} function ©T ?=?( T *, T )©\use{?=?}, with the same \Index{scope} and \Index{linkage} as the identifier ©T©.
    32753228\begin{rationale}
    32763229Assignment is central to C's imperative programming style, and every existing C object type has assignment defined for it ( except for array types, which are treated as pointer types for purposes of assignment).
    32773230Without this rule, nearly every inferred type parameter would need an accompanying assignment assertion parameter.
    3278 If a type parameter should not have an assignment operation,
    3279 \lstinline$dtype$ should be used.
     3231If a type parameter should not have an assignment operation, ©dtype© should be used.
    32803232If a type should not have assignment defined, the user can define an assignment function that causes a run-time error, or provide an external declaration but no definition and thus cause a link-time error.
    32813233\end{rationale}
    32823234
    3283 A definition\index{type definition} of a type identifier \lstinline$T$ with \Index{implementation type} \lstinline$I$ and type-class \lstinline$type$ implicitly defines a default assignment function.
    3284 A definition\index{type definition} of a type identifier \lstinline$T$ with implementation type \lstinline$I$ and an assertion list implicitly defines \define{default function}s and
    3285 \define{default object}s as declared by the assertion declarations.
    3286 The default objects and functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$.
     3235A definition\index{type definition} of a type identifier ©T© with \Index{implementation type} ©I© and type-class ©type© implicitly defines a default assignment function.
     3236A definition\index{type definition} of a type identifier ©T© with implementation type ©I© and an assertion list implicitly defines \define{default function}s and \define{default object}s as declared by the assertion declarations.
     3237The default objects and functions have the same \Index{scope} and \Index{linkage} as the identifier ©T©.
    32873238Their values are determined as follows:
    32883239\begin{itemize}
    32893240\item
    3290 If at the definition of \lstinline$T$ there is visible a declaration of an object with the same name as the default object, and if the type of that object with all occurrence of \lstinline$I$ replaced by \lstinline$T$ is compatible with the type of the default object, then the default object is initialized with that object.
    3291 Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default object.
     3241If at the definition of ©T© there is visible a declaration of an object with the same name as the default object, and if the type of that object with all occurrence of ©I© replaced by ©T© is compatible with the type of the default object, then the default object is initialized with that object.
     3242Otherwise the scope of the declaration of ©T© must contain a definition of the default object.
    32923243
    32933244\item
    3294 If at the definition of \lstinline$T$ there is visible a declaration of a function with the same name as the default function, and if the type of that function with all occurrence of \lstinline$I$ replaced by \lstinline$T$ is compatible with the type of the default function, then the default function calls that function after converting its arguments and returns the converted result.
    3295 
    3296 Otherwise, if \lstinline$I$ contains exactly one anonymous member\index{anonymous member} such that at the definition of \lstinline$T$ there is visible a declaration of a function with the same name as the default function, and the type of that function with all occurrences of the anonymous member's type in its parameter list replaced by \lstinline$T$ is compatible with the type of the default function, then the default function calls that function after converting its arguments and returns the result.
    3297 
    3298 Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default function.
     3245If at the definition of ©T© there is visible a declaration of a function with the same name as the default function, and if the type of that function with all occurrence of ©I© replaced by ©T© is compatible with the type of the default function, then the default function calls that function after converting its arguments and returns the converted result.
     3246
     3247Otherwise, if ©I© contains exactly one anonymous member\index{anonymous member} such that at the definition of ©T© there is visible a declaration of a function with the same name as the default function, and the type of that function with all occurrences of the anonymous member's type in its parameter list replaced by ©T© is compatible with the type of the default function, then the default function calls that function after converting its arguments and returns the result.
     3248
     3249Otherwise the scope of the declaration of ©T© must contain a definition of the default function.
    32993250\end{itemize}
    33003251\begin{rationale}
     
    33023253\end{rationale}
    33033254
    3304 A function or object with the same type and name as a default function or object that is declared within the scope of the definition of \lstinline$T$ replaces the default function or object.
     3255A function or object with the same type and name as a default function or object that is declared within the scope of the definition of ©T© replaces the default function or object.
    33053256
    33063257\examples
     
    33123263Pair b = { 1, 1 };
    33133264\end{lstlisting}
    3314 The definition of \lstinline$Pair$ implicitly defines two objects \lstinline$a$ and \lstinline$b$.
    3315 \lstinline$Pair a$ inherits its value from the \lstinline$struct impl a$.
    3316 The definition of
    3317 \lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a value from.
     3265The definition of ©Pair© implicitly defines two objects ©a© and ©b©.
     3266©Pair a© inherits its value from the ©struct impl a©.
     3267The definition of ©Pair b© is compulsory because there is no ©struct impl b© to construct a value from.
    33183268\begin{lstlisting}
    33193269trait ss( otype T ) {
     
    33213271        void munge( T * );
    33223272}
    3323 otype Whatsit | ss( Whatsit );@\use{Whatsit}@
    3324 otype Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@
     3273otype Whatsit | ss( Whatsit );§\use{Whatsit}§
     3274otype Doodad | ss( Doodad ) = struct doodad {§\use{Doodad}§
    33253275        Whatsit; // anonymous member
    33263276        int extra;
     
    33283278Doodad clone( Doodad ) { ... }
    33293279\end{lstlisting}
    3330 The definition of \lstinline$Doodad$ implicitly defines three functions:
     3280The definition of ©Doodad© implicitly defines three functions:
    33313281\begin{lstlisting}
    33323282Doodad ?=?( Doodad *, Doodad );
     
    33343284void munge( Doodad * );
    33353285\end{lstlisting}
    3336 The assignment function inherits \lstinline$struct doodad$'s assignment function because the types match when \lstinline$struct doodad$ is replaced by \lstinline$Doodad$ throughout.
    3337 \lstinline$munge()$ inherits \lstinline$Whatsit$'s \lstinline$munge()$ because the types match when
    3338 \lstinline$Whatsit$ is replaced by \lstinline$Doodad$ in the parameter list. \lstinline$clone()$ does \emph{not} inherit \lstinline$Whatsit$'s \lstinline$clone()$: replacement in the parameter list yields ``\lstinline$Whatsit clone( Doodad )$'', which is not compatible with
    3339 \lstinline$Doodad$'s \lstinline$clone()$'s type.
    3340 Hence the definition of
    3341 ``\lstinline$Doodad clone( Doodad )$'' is necessary.
     3286The assignment function inherits ©struct doodad©'s assignment function because the types match when ©struct doodad©  is replaced by ©Doodad© throughout.
     3287©munge()© inherits ©Whatsit©'s ©munge()© because the types match when ©Whatsit© is replaced by ©Doodad© in the parameter list. ©clone()© does \emph{not} inherit ©Whatsit©'s ©clone()©: replacement in the parameter list yields ``©Whatsit clone( Doodad )©'', which is not compatible with ©Doodad©'s ©clone()©'s type.
     3288Hence the definition of ``©Doodad clone( Doodad )©'' is necessary.
    33423289
    33433290Default functions and objects are subject to the normal scope rules.
    33443291\begin{lstlisting}
    3345 otype T = @\ldots@;
    3346 T a_T = @\ldots@;               // Default assignment used.
     3292otype T = ...;
     3293T a_T = ...;            // Default assignment used.
    33473294T ?=?( T *, T );
    3348 T a_T = @\ldots@;               // Programmer-defined assignment called.
     3295T a_T = ...;            // Programmer-defined assignment called.
    33493296\end{lstlisting}
    33503297\begin{rationale}
     
    33793326\begin{syntax}
    33803327\oldlhs{labeled-statement}
    3381 \rhs \lstinline$case$ \nonterm{case-value-list} : \nonterm{statement}
     3328\rhs ©case© \nonterm{case-value-list} : \nonterm{statement}
    33823329\lhs{case-value-list}
    33833330\rhs \nonterm{case-value}
    3384 \rhs \nonterm{case-value-list} \lstinline$,$ \nonterm{case-value}
     3331\rhs \nonterm{case-value-list} ©,© \nonterm{case-value}
    33853332\lhs{case-value}
    33863333\rhs \nonterm{constant-expression}
    33873334\rhs \nonterm{subrange}
    33883335\lhs{subrange}
    3389 \rhs \nonterm{constant-expression} \lstinline$~$ \nonterm{constant-expression}
     3336\rhs \nonterm{constant-expression} ©~© \nonterm{constant-expression}
    33903337\end{syntax}
    33913338
     
    34003347case 1~4, 9~14, 27~32:
    34013348\end{lstlisting}
    3402 The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$ and \lstinline$choose$ statements, precluding Duff's device.
     3349The ©case© and ©default© clauses are restricted within the ©switch© and ©choose© statements, precluding Duff's device.
    34033350
    34043351
    34053352\subsection{Expression and null statements}
    34063353
    3407 The expression in an expression statement is treated as being cast to \lstinline$void$.
     3354The expression in an expression statement is treated as being cast to ©void©.
    34083355
    34093356
     
    34123359\begin{syntax}
    34133360\oldlhs{selection-statement}
    3414 \rhs \lstinline$choose$ \lstinline$($ \nonterm{expression} \lstinline$)$ \nonterm{statement}
     3361\rhs ©choose© ©(© \nonterm{expression} ©)© \nonterm{statement}
    34153362\end{syntax}
    34163363
    3417 The controlling expression \lstinline$E$ in the \lstinline$switch$ and \lstinline$choose$ statement:
     3364The controlling expression ©E© in the ©switch© and ©choose© statement:
    34183365\begin{lstlisting}
    34193366switch ( E ) ...
     
    34213368\end{lstlisting} may have more than one interpretation, but it shall have only one interpretation with an integral type.
    34223369An \Index{integer promotion} is performed on the expression if necessary.
    3423 The constant expressions in \lstinline$case$ statements with the switch are converted to the promoted type.
     3370The constant expressions in ©case© statements with the switch are converted to the promoted type.
    34243371
    34253372
    34263373\setcounter{subsubsection}{3}
    3427 \subsubsection{The \lstinline$choose$ statement}
    3428 
    3429 The \lstinline$choose$ statement is the same as the \lstinline$switch$ statement except control transfers to the end of the \lstinline$choose$ statement at a \lstinline$case$ or \lstinline$default$ labeled statement.
    3430 The \lstinline$fallthru$ statement is used to fall through to the next \lstinline$case$ or \lstinline$default$ labeled statement.
     3374\subsubsection[The choose statement]{The \lstinline@choose@ statement}
     3375
     3376The ©choose© statement is the same as the ©switch© statement except control transfers to the end of the ©choose© statement at a ©case© or ©default© labeled statement.
     3377The ©fallthru© statement is used to fall through to the next ©case© or ©default© labeled statement.
    34313378The following have identical meaning:
    34323379\begin{flushleft}
     
    34533400\end{tabular}
    34543401\end{flushleft}
    3455 The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with the \lstinline$switch$ statement.
     3402The ©choose© statement addresses the problem of accidental fall-through associated with the ©switch© statement.
    34563403
    34573404
    34583405\subsection{Iteration statements}
    34593406
    3460 The controlling expression \lstinline$E$ in the loops
     3407The controlling expression ©E© in the loops
    34613408\begin{lstlisting}
    34623409if ( E ) ...
    34633410while ( E ) ...
    34643411do ... while ( E );
    3465 \end{lstlisting} is treated as ``\lstinline$( int )((E)!=0)$''.
     3412\end{lstlisting}
     3413is treated as ``©( int )((E)!=0)©''.
    34663414
    34673415The statement
    34683416\begin{lstlisting}
    3469 for ( a; b; c ) @\ldots@
     3417for ( a; b; c ) ...
    34703418\end{lstlisting} is treated as
    34713419\begin{lstlisting}
     
    34783426\begin{syntax}
    34793427\oldlhs{jump-statement}
    3480 \rhs \lstinline$continue$ \nonterm{identifier}\opt
    3481 \rhs \lstinline$break$ \nonterm{identifier}\opt
     3428\rhs ©continue© \nonterm{identifier}\opt
     3429\rhs ©break© \nonterm{identifier}\opt
    34823430\rhs \ldots
    3483 \rhs \lstinline$throw$ \nonterm{assignment-expression}\opt
    3484 \rhs \lstinline$throwResume$ \nonterm{assignment-expression}\opt \nonterm{at-expression}\opt
    3485 \lhs{at-expression} \lstinline$_At$ \nonterm{assignment-expression}
     3431\rhs ©throw© \nonterm{assignment-expression}\opt
     3432\rhs ©throwResume© \nonterm{assignment-expression}\opt \nonterm{at-expression}\opt
     3433\lhs{at-expression} ©_At© \nonterm{assignment-expression}
    34863434\end{syntax}
    34873435
    3488 Labeled \lstinline$continue$ and \lstinline$break$ allow useful but restricted control-flow that reduces the need for the \lstinline$goto$ statement for exiting multiple nested control-structures.
     3436Labeled ©continue© and ©break© allow useful but restricted control-flow that reduces the need for the ©goto© statement for exiting multiple nested control-structures.
    34893437\begin{lstlisting}
    34903438L1: {                                                   // compound
     
    35133461
    35143462\setcounter{subsubsection}{1}
    3515 \subsubsection{The \lstinline$continue$ statement}
    3516 
    3517 The identifier in a \lstinline$continue$ statement shall name a label located on an enclosing iteration statement.
    3518 
    3519 
    3520 \subsubsection{The \lstinline$break$ statement}
    3521 
    3522 The identifier in a \lstinline$break$ statement shall name a label located on an enclosing compound, selection or iteration statement.
    3523 
    3524 
    3525 \subsubsection{The \lstinline$return$ statement}
    3526 
    3527 An expression in a \lstinline$return$ statement is treated as being cast to the result type of the function.
    3528 
    3529 
    3530 \subsubsection{The \lstinline$throw$ statement}
     3463\subsubsection[The continue statement]{The \lstinline@continue@ statement}
     3464
     3465The identifier in a ©continue© statement shall name a label located on an enclosing iteration statement.
     3466
     3467
     3468\subsubsection[The break statement]{The \lstinline@break@ statement}
     3469
     3470The identifier in a ©break© statement shall name a label located on an enclosing compound, selection or iteration statement.
     3471
     3472
     3473\subsubsection[The return statement]{The \lstinline@return@ statement}
     3474
     3475An expression in a ©return© statement is treated as being cast to the result type of the function.
     3476
     3477
     3478\subsubsection[The throw statement]{The \lstinline@throw@ statement}
    35313479
    35323480When an exception is raised, \Index{propagation} directs control from a raise in the source execution to a handler in the faulting execution.
    35333481
    35343482
    3535 \subsubsection{The \lstinline$throwResume$ statement}
     3483\subsubsection[The throwResume statement]{The \lstinline@throwResume@ statement}
    35363484
    35373485
     
    35403488\begin{syntax}
    35413489\lhs{exception-statement}
    3542 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list}
    3543 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{finally-clause}
    3544 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list} \nonterm{finally-clause}
     3490\rhs ©try© \nonterm{compound-statement} \nonterm{handler-list}
     3491\rhs ©try© \nonterm{compound-statement} \nonterm{finally-clause}
     3492\rhs ©try© \nonterm{compound-statement} \nonterm{handler-list} \nonterm{finally-clause}
    35453493\lhs{handler-list}
    35463494\rhs \nonterm{handler-clause}
    3547 \rhs \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
    3548 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
    3549 \rhs \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
    3550 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
     3495\rhs ©catch© ©(© \ldots ©)© \nonterm{compound-statement}
     3496\rhs \nonterm{handler-clause} ©catch© ©(© \ldots ©)© \nonterm{compound-statement}
     3497\rhs ©catchResume© ©(© \ldots ©)© \nonterm{compound-statement}
     3498\rhs \nonterm{handler-clause} ©catchResume© ©(© \ldots ©)© \nonterm{compound-statement}
    35513499\lhs{handler-clause}
    3552 \rhs \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
    3553 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
    3554 \rhs \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
    3555 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
     3500\rhs ©catch© ©(© \nonterm{exception-declaration} ©)© \nonterm{compound-statement}
     3501\rhs \nonterm{handler-clause} ©catch© ©(© \nonterm{exception-declaration} ©)© \nonterm{compound-statement}
     3502\rhs ©catchResume© ©(© \nonterm{exception-declaration} ©)© \nonterm{compound-statement}
     3503\rhs \nonterm{handler-clause} ©catchResume© ©(© \nonterm{exception-declaration} ©)© \nonterm{compound-statement}
    35563504\lhs{finally-clause}
    3557 \rhs \lstinline$finally$ \nonterm{compound-statement}
     3505\rhs ©finally© \nonterm{compound-statement}
    35583506\lhs{exception-declaration}
    35593507\rhs \nonterm{type-specifier}
     
    35633511\rhs \nonterm{new-abstract-declarator-tuple}
    35643512\lhs{asynchronous-statement}
    3565 \rhs \lstinline$enable$ \nonterm{identifier-list} \nonterm{compound-statement}
    3566 \rhs \lstinline$disable$ \nonterm{identifier-list} \nonterm{compound-statement}
     3513\rhs ©enable© \nonterm{identifier-list} \nonterm{compound-statement}
     3514\rhs ©disable© \nonterm{identifier-list} \nonterm{compound-statement}
    35673515\end{syntax}
    35683516
     
    35703518
    35713519
    3572 \subsubsection{The \lstinline$try$ statement}
    3573 
    3574 The \lstinline$try$ statement is a block with associated handlers, called a \Index{guarded block};
     3520\subsubsection[The try statement]{The \lstinline@try@ statement}
     3521
     3522The ©try© statement is a block with associated handlers, called a \Index{guarded block};
    35753523all other blocks are \Index{unguarded block}s.
    3576 A \lstinline$goto$, \lstinline$break$, \lstinline$return$, or \lstinline$continue$ statement can be used to transfer control out of a try block or handler, but not into one.
    3577 
    3578 
    3579 \subsubsection{The \lstinline$enable$/\lstinline$disable$ statements}
    3580 
    3581 The \lstinline$enable$/\lstinline$disable$ statements toggle delivery of \Index{asynchronous exception}s.
     3524A ©goto©, ©break©, ©return©, or ©continue© statement can be used to transfer control out of a try block or handler, but not into one.
     3525
     3526
     3527\subsubsection[The enable/disable statements]{The \lstinline@enable@/\lstinline@disable@ statements}
     3528
     3529The ©enable©/©disable© statements toggle delivery of \Index{asynchronous exception}s.
    35823530
    35833531
     
    35893537\subsection{Predefined macro names}
    35903538
    3591 The implementation shall define the macro names \lstinline$__LINE__$, \lstinline$__FILE__$,
    3592 \lstinline$__DATE__$, and \lstinline$__TIME__$, as in the {\c11} standard.
    3593 It shall not define the macro name \lstinline$__STDC__$.
    3594 
    3595 In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the decimal constant 1.
     3539The implementation shall define the macro names ©__LINE__©, ©__FILE__©, ©__DATE__©, and ©__TIME__©, as in the {\c11} standard.
     3540It shall not define the macro name ©__STDC__©.
     3541
     3542In addition, the implementation shall define the macro name ©__CFORALL__© to be the decimal constant 1.
    35963543
    35973544
     
    36103557The pointer, integral, and floating-point types are all \define{scalar types}.
    36113558All of these types can be logically negated and compared.
    3612 The assertion ``\lstinline$scalar( Complex )$'' should be read as ``type \lstinline$Complex$ is scalar''.
    3613 \begin{lstlisting}
    3614 trait scalar( otype T ) {@\impl{scalar}@
     3559The assertion ``©scalar( Complex )©'' should be read as ``type ©Complex© is scalar''.
     3560\begin{lstlisting}
     3561trait scalar( otype T ) {§\impl{scalar}§
    36153562        int !?( T );
    36163563        int ?<?( T, T ), ?<=?( T, T ), ?==?( T, T ), ?>=?( T, T ), ?>?( T, T ), ?!=?( T, T );
     
    36223569This is equivalent to inheritance of specifications.
    36233570\begin{lstlisting}
    3624 trait arithmetic( otype T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@
     3571trait arithmetic( otype T | scalar( T ) ) {§\impl{arithmetic}§§\use{scalar}§
    36253572        T +?( T ), -?( T );
    36263573        T ?*?( T, T ), ?/?( T, T ), ?+?( T, T ), ?-?( T, T );
     
    36283575\end{lstlisting}
    36293576
    3630 The various flavors of \lstinline$char$ and \lstinline$int$ and the enumerated types make up the
    3631 \define{integral types}.
    3632 \begin{lstlisting}
    3633 trait integral( otype T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@
     3577The various flavors of ©char© and ©int© and the enumerated types make up the \define{integral types}.
     3578\begin{lstlisting}
     3579trait integral( otype T | arithmetic( T ) ) {§\impl{integral}§§\use{arithmetic}§
    36343580        T ~?( T );
    36353581        T ?&?( T, T ), ?|?( T, T ), ?^?( T, T );
     
    36453591The only operation that can be applied to all modifiable lvalues is simple assignment.
    36463592\begin{lstlisting}
    3647 trait m_lvalue( otype T ) {@\impl{m_lvalue}@
     3593trait m_lvalue( otype T ) {§\impl{m_lvalue}§
    36483594        T ?=?( T *, T );
    36493595};
     
    36553601Scalars can also be incremented and decremented.
    36563602\begin{lstlisting}
    3657 trait m_l_scalar( otype T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@
    3658         T ?++( T * ), ?--( T * );@\use{scalar}@@\use{m_lvalue}@
     3603trait m_l_scalar( otype T | scalar( T ) | m_lvalue( T ) ) {§\impl{m_l_scalar}§
     3604        T ?++( T * ), ?--( T * );§\use{scalar}§§\use{m_lvalue}§
    36593605        T ++?( T * ), --?( T * );
    36603606};
     
    36623608
    36633609Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic.
    3664 Note that this results in the ``inheritance'' of \lstinline$scalar$ along both paths.
    3665 \begin{lstlisting}
    3666 trait m_l_arithmetic( otype T | m_l_scalar( T ) | arithmetic( T ) ) {@\impl{m_l_arithmetic}@
    3667         T ?/=?( T *, T ), ?*=?( T *, T );@\use{m_l_scalar}@@\use{arithmetic}@
     3610Note that this results in the ``inheritance'' of ©scalar© along both paths.
     3611\begin{lstlisting}
     3612trait m_l_arithmetic( otype T | m_l_scalar( T ) | arithmetic( T ) ) {§\impl{m_l_arithmetic}§
     3613        T ?/=?( T *, T ), ?*=?( T *, T );§\use{m_l_scalar}§§\use{arithmetic}§
    36683614        T ?+=?( T *, T ), ?-=?( T *, T );
    36693615};
    3670 trait m_l_integral( otype T | m_l_arithmetic( T ) | integral( T ) ) {@\impl{m_l_integral}@
    3671         T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );@\use{m_l_arithmetic}@
    3672         T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );@\use{integral}@
     3616trait m_l_integral( otype T | m_l_arithmetic( T ) | integral( T ) ) {§\impl{m_l_integral}§
     3617        T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );§\use{m_l_arithmetic}§
     3618        T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );§\use{integral}§
    36733619};
    36743620\end{lstlisting}
     
    36773623\subsection{Pointer and array types}
    36783624
    3679 Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a constant pointer to the first element of the array, and the subscript expression
    3680 ``\lstinline$a[i]$'' is equivalent to the dereferencing expression ``\lstinline$(*( a+( i )))$''.
    3681 Technically, pointer arithmetic and pointer comparisons other than ``\lstinline$==$'' and
    3682 ``\lstinline$!=$'' are only defined for pointers to array elements, but the type system does not enforce those restrictions.
     3625Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a constant pointer to the first element of the array, and the subscript expression ``©a[i]©'' is equivalent to the dereferencing expression ``©(*( a+( i )))©''.
     3626Technically, pointer arithmetic and pointer comparisons other than ``©==©'' and ``©!=©'' are only defined for pointers to array elements, but the type system does not enforce those restrictions.
    36833627Consequently, there is no need for a separate ``array type'' specification.
    36843628
    36853629Pointer types are scalar types.
    3686 Like other scalar types, they have ``\lstinline$+$'' and
    3687 ``\lstinline$-$'' operators, but the types do not match the types of the operations in
    3688 \lstinline$arithmetic$, so these operators cannot be consolidated in \lstinline$scalar$.
    3689 \begin{lstlisting}
    3690 trait pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@
     3630Like other scalar types, they have ``©+©'' and ``©-©'' operators, but the types do not match the types of the operations in ©arithmetic©, so these operators cannot be consolidated in ©scalar©.
     3631\begin{lstlisting}
     3632trait pointer( type P | scalar( P ) ) {§\impl{pointer}§§\use{scalar}§
    36913633        P ?+?( P, long int ), ?+?( long int, P ), ?-?( P, long int );
    36923634        ptrdiff_t ?-?( P, P );
    36933635};
    3694 trait m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@
     3636trait m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {§\impl{m_l_pointer}§
    36953637        P ?+=?( P *, long int ), ?-=?( P *, long int );
    36963638        P ?=?( P *, void * );
     
    37013643Specifications that define the dereference operator ( or subscript operator ) require two parameters, one for the pointer type and one for the pointed-at ( or element ) type.
    37023644Different specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not included in types.
    3703 The assertion ``\lstinline$|ptr_to( Safe_pointer, int )$'' should be read as
    3704 ``\lstinline$Safe_pointer$ acts like a pointer to \lstinline$int$''.
    3705 \begin{lstlisting}
    3706 trait ptr_to( otype P | pointer( P ), otype T ) {@\impl{ptr_to}@@\use{pointer}@
     3645The assertion ``©|ptr_to( Safe_pointer, int )©'' should be read as ``©Safe_pointer© acts like a pointer to ©int©''.
     3646\begin{lstlisting}
     3647trait ptr_to( otype P | pointer( P ), otype T ) {§\impl{ptr_to}§§\use{pointer}§
    37073648        lvalue T *?( P );
    37083649        lvalue T ?[?]( P, long int );
    37093650};
    3710 trait ptr_to_const( otype P | pointer( P ), otype T ) {@\impl{ptr_to_const}@
     3651trait ptr_to_const( otype P | pointer( P ), otype T ) {§\impl{ptr_to_const}§
    37113652        const lvalue T *?( P );
    3712         const lvalue T ?[?]( P, long int );@\use{pointer}@
     3653        const lvalue T ?[?]( P, long int );§\use{pointer}§
    37133654};
    3714 trait ptr_to_volatile( otype P | pointer( P ), otype T ) }@\impl{ptr_to_volatile}@
     3655trait ptr_to_volatile( otype P | pointer( P ), otype T ) }§\impl{ptr_to_volatile}§
    37153656        volatile lvalue T *?( P );
    3716         volatile lvalue T ?[?]( P, long int );@\use{pointer}@
     3657        volatile lvalue T ?[?]( P, long int );§\use{pointer}§
    37173658};
    3718 trait ptr_to_const_volatile( otype P | pointer( P ), otype T ) }@\impl{ptr_to_const_volatile}@
    3719         const volatile lvalue T *?( P );@\use{pointer}@
     3659trait ptr_to_const_volatile( otype P | pointer( P ), otype T ) }§\impl{ptr_to_const_volatile}§
     3660        const volatile lvalue T *?( P );§\use{pointer}§
    37203661        const volatile lvalue T ?[?]( P, long int );
    37213662};
    37223663\end{lstlisting}
    37233664
    3724 Assignment to pointers is more complicated than is the case with other types, because the target's type can have extra type qualifiers in the pointed-at type: a ``\lstinline$T *$'' can be assigned to a ``\lstinline$const T *$'', a ``\lstinline$volatile T *$'', and a ``\lstinline$const volatile T *$''.
    3725 Again, the pointed-at type is passed in, so that assertions can connect these specifications to the
    3726 ``\lstinline$ptr_to$'' specifications.
    3727 \begin{lstlisting}
    3728 trait m_l_ptr_to( otype P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to}@ otype T | ptr_to( P, T )@\use{ptr_to}@ {
     3665Assignment to pointers is more complicated than is the case with other types, because the target's type can have extra type qualifiers in the pointed-at type: a ``©T *©'' can be assigned to a ``©const T *©'', a ``©volatile T *©'', and a ``©const volatile T *©''.
     3666Again, the pointed-at type is passed in, so that assertions can connect these specifications to the ``©ptr_to©'' specifications.
     3667\begin{lstlisting}
     3668trait m_l_ptr_to( otype P | m_l_pointer( P ),§\use{m_l_pointer}§§\impl{m_l_ptr_to}§ otype T | ptr_to( P, T )§\use{ptr_to}§ {
    37293669        P ?=?( P *, T * );
    37303670        T * ?=?( T **, P );
    37313671};
    3732 trait m_l_ptr_to_const( otype P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_const}@ otype T | ptr_to_const( P, T )@\use{ptr_to_const}@) {
     3672trait m_l_ptr_to_const( otype P | m_l_pointer( P ),§\use{m_l_pointer}§§\impl{m_l_ptr_to_const}§ otype T | ptr_to_const( P, T )§\use{ptr_to_const}§) {
    37333673        P ?=?( P *, const T * );
    37343674        const T * ?=?( const T **, P );
    37353675};
    3736 trait m_l_ptr_to_volatile( otype P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_volatile}@ otype T | ptr_to_volatile( P, T )) {@\use{ptr_to_volatile}@
     3676trait m_l_ptr_to_volatile( otype P | m_l_pointer( P ),§\use{m_l_pointer}§§\impl{m_l_ptr_to_volatile}§ otype T | ptr_to_volatile( P, T )) {§\use{ptr_to_volatile}§
    37373677        P ?=?( P *, volatile T * );
    37383678        volatile T * ?=?( volatile T **, P );
    37393679};
    3740 trait m_l_ptr_to_const_volatile( otype P | ptr_to_const_volatile( P ),@\use{ptr_to_const_volatile}@@\impl{m_l_ptr_to_const_volatile}@
    3741                 otype T | m_l_ptr_to_volatile( P, T ) | m_l_ptr_to_const( P )) {@\use{m_l_ptr_to_const}@@\use{m_l_ptr_to_volatile}@
     3680trait m_l_ptr_to_const_volatile( otype P | ptr_to_const_volatile( P ),§\use{ptr_to_const_volatile}§§\impl{m_l_ptr_to_const_volatile}§
     3681                otype T | m_l_ptr_to_volatile( P, T ) | m_l_ptr_to_const( P )) {§\use{m_l_ptr_to_const}§§\use{m_l_ptr_to_volatile}§
    37423682        P ?=?( P *, const volatile T * );
    37433683        const volatile T * ?=?( const volatile T **, P );
     
    37483688An alternative specification can make use of the fact that qualification of the pointed-at type is part of a pointer type to capture that regularity.
    37493689\begin{lstlisting}
    3750 trait m_l_ptr_like( type MyP | m_l_pointer( MyP ),@\use{m_l_pointer}@@\impl{m_l_ptr_like}@ type CP | m_l_pointer( CP ) ) {
     3690trait m_l_ptr_like( type MyP | m_l_pointer( MyP ),§\use{m_l_pointer}§§\impl{m_l_ptr_like}§ type CP | m_l_pointer( CP ) ) {
    37513691        MyP ?=?( MyP *, CP );
    37523692        CP ?=?( CP *, MyP );
    37533693};
    37543694\end{lstlisting}
    3755 The assertion ``\lstinline$| m_l_ptr_like( Safe_ptr, const int * )$'' should be read as
    3756 ``\lstinline$Safe_ptr$ is a pointer type like \lstinline$const int *$''.
    3757 This specification has two defects, compared to the original four: there is no automatic assertion that dereferencing a
    3758 \lstinline$MyP$ produces an lvalue of the type that \lstinline$CP$ points at, and the
    3759 ``\lstinline$|m_l_pointer( CP )$'' assertion provides only a weak assurance that the argument passed to \lstinline$CP$ really is a pointer type.
     3695The assertion ``©| m_l_ptr_like( Safe_ptr, const int * )©'' should be read as ``©Safe_ptr© is a pointer type like ©const int *©''.
     3696This specification has two defects, compared to the original four: there is no automatic assertion that dereferencing a ©MyP© produces an lvalue of the type that ©CP© points at, and the ``©|m_l_pointer( CP )©'' assertion provides only a weak assurance that the argument passed to ©CP© really is a pointer type.
    37603697
    37613698
     
    37633700
    37643701Different operators often have related meanings;
    3765 for instance, in C, ``\lstinline$+$'',
    3766 ``\lstinline$+=$'', and the two versions of ``\lstinline$++$'' perform variations of addition.
     3702for instance, in C, ``©+©'', ``©+=©'', and the two versions of ``©++©'' perform variations of addition.
    37673703Languages like {\CC} and Ada allow programmers to define operators for new types, but do not require that these relationships be preserved, or even that all of the operators be implemented.
    37683704Completeness and consistency is left to the good taste and discretion of the programmer.
     
    37773713The different comparison operators have obvious relationships, but there is no obvious subset of the operations to use in the implementation of the others.
    37783714However, it is usually convenient to implement a single comparison function that returns a negative integer, 0, or a positive integer if its first argument is respectively less than, equal to, or greater than its second argument;
    3779 the library function \lstinline$strcmp$ is an example.
    3780 
    3781 C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation, returns 1 if its operand compares equal to 0, and 0 otherwise.
     3715the library function ©strcmp© is an example.
     3716
     3717C and \CFA have an extra, non-obvious comparison operator: ``©!©'', logical negation, returns 1 if its operand compares equal to 0, and 0 otherwise.
    37823718\begin{lstlisting}
    37833719trait comparable( otype T ) {
     
    38273763\end{lstlisting}
    38283764
    3829 Note that, although an arithmetic type would certainly provide comparison functions, and an integral type would provide arithmetic operations, there does not have to be any relationship among
    3830 \lstinline$int_base$, \lstinline$arith_base$ and \lstinline$comparable$.
     3765Note that, although an arithmetic type would certainly provide comparison functions, and an integral type would provide arithmetic operations, there does not have to be any relationship among ©int_base©, ©arith_base© and ©comparable©.
    38313766Note also that these declarations provide guidance and assistance, but they do not define an absolutely minimal set of requirements.
    3832 A truly minimal implementation of an arithmetic type might only provide
    3833 \lstinline$0$, \lstinline$1$, and \lstinline$?-=?$, which would be used by polymorphic
    3834 \lstinline$?+=?$, \lstinline$?*=?$, and \lstinline$?/=?$ functions.
    3835 
    3836 Note also that \lstinline$short$ is an integer type in C11 terms, but has no operations!
     3767A truly minimal implementation of an arithmetic type might only provide ©0©, ©1©, and ©?-=?©, which would be used by polymorphic ©?+=?©, ©?*=?©, and ©?/=?© functions.
     3768
     3769Note also that ©short© is an integer type in C11 terms, but has no operations!
    38373770
    38383771
     
    38413774
    38423775Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers.
    3843 This gets into \lstinline$noalias$ territory.
    3844 Qualifying anything (``\lstinline$short restrict rs$'') means pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers.
     3776This gets into ©noalias© territory.
     3777Qualifying anything (``©short restrict rs©'') means pointer parameters of ©?++©, etc, would need restrict qualifiers.
    38453778
    38463779Enumerated types.
     
    38523785Color, enum Color ) really make sense? ?++ does, but it adds (int)1.
    38533786
    3854 Operators on {,signed,unsigned} char and other small types. ?<? harmless;
     3787Operators on {,signed,unsigned} char and other small types. ©?<?© harmless;
    38553788?*? questionable for chars.
    38563789Generic selections make these choices visible.
    3857 Safe conversion operators? Predefined
    3858 ``promotion'' function?
    3859 
    3860 \lstinline$register$ assignment might be handled as assignment to a temporary with copying back and forth, but copying must not be done by assignment.
    3861 
    3862 Don't use ptrdiff\_t by name in the predefineds.
     3790Safe conversion operators? Predefined ``promotion'' function?
     3791
     3792©register© assignment might be handled as assignment to a temporary with copying back and forth, but copying must not be done by assignment.
     3793
     3794Don't use ©ptrdiff_t© by name in the predefineds.
    38633795
    38643796Polymorphic objects.
  • doc/user/Makefile

    r1b5c81ed rf80e0218  
    11## Define the appropriate configuration variables.
    22
    3 TeXLIB = .:../bibliography/:../LaTeXmacros/:
    4 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex
     3TeXLIB = .:../LaTeXmacros:../LaTeXmacros/listings:../LaTeXmacros/enumitem:../bibliography/:
     4LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error
    55BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
    66
     
    1212
    1313FIGURES = ${addsuffix .tex, \
     14Cdecl \
    1415}
    1516
  • doc/user/user.tex

    r1b5c81ed rf80e0218  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Sun Apr 10 22:50:15 2016
    14 %% Update Count     : 72
     13%% Last Modified On : Mon Jun 20 10:47:22 2016
     14%% Update Count     : 575
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
    1717% requires tex packages: texlive-base texlive-latex-base tex-common texlive-humanities texlive-latex-extra texlive-fonts-recommended
    1818
    19 \documentclass[openright,twoside]{article}
     19% inline code ©...© (copyright symbol) emacs: C-q M-)
     20% red highlighting ®...® (registered trademark symbol) emacs: C-q M-.
     21% blue highlighting ß...ß (sharp s symbol) emacs: C-q M-_
     22% green highlighting ¢...¢ (cent symbol) emacs: C-q M-"
     23% LaTex escape §...§ (section symbol) emacs: C-q M-'
     24% keyword escape ¶...¶ (pilcrow symbol) emacs: C-q M-^
     25% math escape $...$ (dollar symbol)
     26
     27\documentclass[twoside,11pt]{article}
     28
    2029%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2130
     
    2433\usepackage{textcomp}
    2534\usepackage[latin1]{inputenc}
    26 \usepackage{upquote}
    27 \usepackage{fullpage,times}
     35\usepackage{fullpage,times,comment}
     36\usepackage{epic,eepic}
     37\usepackage{upquote}                                                                    % switch curled `'" to straight
    2838\usepackage{xspace}
    29 \usepackage{varioref}
    30 \usepackage{listings}
    31 \usepackage{footmisc}
    32 \usepackage{comment}
    33 \usepackage{latexsym}                                   % \Box
     39\usepackage{varioref}                                                                   % extended references
     40\usepackage{listings}                                                                   % format program code
     41\usepackage[flushmargin]{footmisc}                                              % support label/reference in footnote
     42\usepackage{latexsym}                                   % \Box glyph
    3443\usepackage{mathptmx}                                   % better math font with "times"
     44\usepackage[usenames]{color}
    3545\usepackage[pagewise]{lineno}
    3646\renewcommand{\linenumberfont}{\scriptsize\sffamily}
     47\input{common}                                          % bespoke macros used in the document
    3748\usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}
    3849\usepackage{breakurl}
    3950\renewcommand{\UrlFont}{\small\sf}
    4051
     52\makeatletter
     53\renewcommand{\pagestyle}[1]{
     54  \@ifundefined{ps@#1}%
     55    \undefinedpagestyle
     56    {\def\@tempa{#1}\def\@tempb{headings}\def\@tempc{myheadings}%
     57     \ifx\@tempa\@tempb\setlength{\topmargin}{-0.25in}\setlength{\headsep}{0.25in}%
     58     \else\ifx\@tempa\@tempc\setlength{\topmargin}{-0.25in}\setlength{\headsep}{0.25in}\fi\fi%
     59     \@nameuse{ps@#1}}}% pagestyle
     60\makeatother
     61
     62
    4163%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4264
    43 % Bespoke macros used in the document.
    44 \input{common}
    45 
    46 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    47 
    4865% Names used in the document.
    4966
     67\newcommand{\Version}{1.0.0}
    5068\newcommand{\CS}{C\raisebox{-0.9ex}{\large$^\sharp$}\xspace}
     69
     70\newcommand{\Textbf}[2][red]{{\color{#1}{\textbf{#2}}}}
     71\newcommand{\Emph}[2][red]{{\color{#1}\textbf{\emph{#2}}}}
     72\newcommand{\R}[1]{\Textbf{#1}}
     73\newcommand{\B}[1]{{\Textbf[blue]{#1}}}
     74\newcommand{\G}[1]{{\Textbf[OliveGreen]{#1}}}
     75
     76\newsavebox{\LstBox}
    5177
    5278%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    5783
    5884%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    59 
    60 \begin{document}
    61 \pagestyle{headings}
    62 \linenumbers                                            % comment out to turn off line numbering
    6385
    6486\title{\Huge
     
    6789Version 1.0                                                     \\
    6890\vspace*{0.25in}
    69 \huge``describe not prescribe''         \\
     91\huge``describe not prescribe''
    7092\vspace*{1in}
    7193}% title
     94
    7295\author{\huge
    73 Peter A. Buhr and ...                           \\
     96Peter A. Buhr and ...
    7497}% author
     98
    7599\date{
    76 DRAFT \\
    77 \today
     100DRAFT \\ \today
    78101}% date
    79102
     103%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     104
     105\begin{document}
     106\pagestyle{headings}
    80107\pagenumbering{roman}
    81 \pagestyle{plain}
     108\linenumbers                                            % comment out to turn off line numbering
    82109
    83110\maketitle
     
    97124
    98125\clearpage
     126\markright{\CFA User Manual}
    99127\pagenumbering{arabic}
    100128
     
    103131
    104132\CFA\footnote{Pronounced ``C-for-all'', and written \CFA, CFA, or \CFL.} is a modern general-purpose programming-language, designed an as evolutionary step forward from the C programming language.
    105 The syntax of the \CFA language builds from C, and should look immediately familiar to C programmers.
     133The syntax of the \CFA language builds from C, and should look immediately familiar to C/\CC programmers.
    106134% Any language feature that is not described here can be assumed to be using the standard C11 syntax.
    107 \CFA adds many modern programming-language features, which directly leads to increased safety and productivity, while maintaining interoperability with existing C programs and maintaining C-like performance.
     135\CFA adds many modern programming-language features that directly lead to increased \emph{safety} and \emph{productivity}, while maintaining interoperability with existing C programs and achieving C performance.
    108136Like C, \CFA is a statically typed, procedural language with a low-overhead runtime, meaning there is no global garbage-collection.
    109137The primary new features include parametric-polymorphism routines and types, exceptions, concurrency, and modules.
     
    116144New programs can be written in \CFA using a combination of C and \CFA features.
    117145\CC had a similar goal 30 years ago, but has struggled over the intervening time to incorporate modern programming-language features because of early design choices.
    118 \CFA has 30 years of hindsight and clean starting point.
     146\CFA has 30 years of hindsight and a clean starting point.
    119147
    120148Like \CC, there may be both an old and new ways to achieve the same effect.
    121149For example, the following programs compare the \CFA and C I/O mechanisms.
    122150\begin{quote2}
    123 \begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
    124 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
     151\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     152\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
    125153\begin{lstlisting}
    126154#include <fstream>
    127155int main( void ) {
    128156        int x = 0, y = 1, z = 2;
    129         sout | x | y | z | endl;
     157        ®sout | x | y | z | endl;®
    130158}
    131159\end{lstlisting}
     
    135163int main( void ) {
    136164        int x = 0, y = 1, z = 2;
    137         printf( "%d %d %d\n", x, y, z );
     165        ®printf( "%d %d %d\n", x, y, z );®
    138166}
    139167\end{lstlisting}
     
    141169\end{quote2}
    142170Both programs output the same result.
    143 While the \CFA I/O looks similar to the \CC output style, there are several important differences, such as automatic spacing between variables as in Python (see also~\VRef{s:IOLibrary}).
    144 
    145 This document is a reference manual for the \CFA programming language, targeted at \CFA programmers.
     171While the \CFA I/O looks similar to the \CC output style, there are important differences, such as automatic spacing between variables as in Python (see also~\VRef{s:IOLibrary}).
     172
     173This document is a user manual for the \CFA programming language, targeted at \CFA programmers.
    146174Implementers may refer to the \CFA Programming Language Specification for details about the language syntax and semantics.
    147175In its current state, this document covers the intended core features of the language.
     
    152180\section{History}
    153181
    154 The \CFA project started with K-W C~\cite{Till89,Buhr94a}, which extended C with new declaration syntax, multiple return values from routines, and extended assignment capabilities using the notion of tuples.
     182The \CFA project started with K-W C~\cite{Buhr94a,Till89}, which extended C with new declaration syntax, multiple return values from routines, and extended assignment capabilities using the notion of tuples.
    155183(See~\cite{Werther96} for some similar work, but for \CC.)
    156184The original \CFA project~\cite{Ditchfield92} extended the C type system with parametric polymorphism and overloading, as opposed to the \CC approach of object-oriented extensions to the C type-system.
    157185A first implementation of the core Cforall language was created~\cite{Bilson03,Esteves04}, but at the time there was little interesting in extending C, so work did not continue.
    158 As the saying goes, ``What goes around, comes around'', and there is now renewed interest in the C programming language because of legacy code-bases, so the \CFA project has been restarted.
     186As the saying goes, ``What goes around, comes around.'', and there is now renewed interest in the C programming language because of legacy code-bases, so the \CFA project has been restarted.
    159187
    160188
     
    162190
    163191Even with all its problems, C is a very popular programming language because it allows writing software at virtually any level in a computer system without restriction.
    164 For systems programming, where direct access to hardware and dealing with real-time issues is a requirement, C is usually the language of choice.
     192For system programming, where direct access to hardware and dealing with real-time issues is a requirement, C is usually the language of choice.
    165193As well, there are millions of lines of C legacy code, forming the base for many software development projects (especially on UNIX systems).
    166194The TIOBE index (\url{http://www.tiobe.com/tiobe_index}) for March 2016 shows programming-language popularity, with Java 20.5\%, C 14.5\%, \CC 6.7\%, \CS 4.3\%, Python 4.3\%, and all other programming languages below 3\%.
     195As well, for 30 years, C has been the number 1 and 2 most popular programming language:
     196\begin{center}
     197\setlength{\tabcolsep}{1.5ex}
     198\begin{tabular}{@{}r|c|c|c|c|c|c|c@{}}
     199Ranking & 2016  & 2011  & 2006  & 2001  & 1996  & 1991  & 1986          \\
     200\hline
     201Java    & 1             & 1             & 1             & 3             & 29    & -             & -                     \\
     202\hline
     203\R{C}   & \R{2} & \R{2} & \R{2} & \R{1} & \R{1} & \R{1} & \R{1}         \\
     204\hline
     205\CC             & 3             & 3             & 3             & 2             & 2             & 2             & 7                     \\
     206\end{tabular}
     207\end{center}
    167208Hence, C is still an extremely important programming language, with double the usage of \CC, where \CC itself is largely C code.
    168209Finally, love it or hate it, C has been an important and influential part of computer science for 40 years and it appears it will continue to be for many more years.
     
    171212The goal of this project is to engineer modern language features into C in an evolutionary rather than revolutionary way.
    172213\CC~\cite{c++,ANSI14:C++} is an example of a similar project;
    173 however, it largely extended the language, and did not address existing problems.\footnote{%
    174 Two important existing problems addressed were changing the type of character literals from \lstinline@int@ to \lstinline@char@ and enumerator from \lstinline@int@ to the type of its enumerators.}
    175 Fortran~\cite{Fortran08}, Ada~\cite{Ada12}, and Cobol~\cite{Cobol14} are examples of programming languages that took an evolutionary approach, where modern language features are added and problems fixed within the framework of the existing language.
     214however, it largely extended the language, and did not address many existing problems.\footnote{%
     215Two important existing problems addressed were changing the type of character literals from ©int© to ©char© and enumerator from ©int© to the type of its enumerators.}
     216Fortran~\cite{Fortran08}, Ada~\cite{Ada12}, and Cobol~\cite{Cobol14} are examples of programming languages that took an evolutionary approach, where modern language features (e.g., objects, concurrency) are added and problems fixed within the framework of the existing language.
    176217Java~\cite{Java8}, Go~\cite{Go}, Rust~\cite{Rust} and D~\cite{D} are examples of the revolutionary approach for modernizing C/\CC, resulting in a new language rather than an extension of the descendent.
    177218These languages have different syntax and semantics from C, and do not interoperate directly with C, largely because of garbage collection.
    178219As a result, there is a significant learning curve to move to these languages, and C legacy-code must be rewritten.
    179 These costs can be prohibitive for many companies with a large software base in C/\CC, and many programmers that require retraining to a new programming language.
    180 
    181 The result of this project is a language that is largely backwards compatible with C11~\cite{C11}, but containing many modern language features and fixing some of the well known C problems.
    182 Without significant extension to the C programming language, C will be unable to cope with the needs of modern programming problems and programmers;
     220These costs can be prohibitive for many companies with a large software base in C/\CC, and a significant number of programmers requiring retraining to a new programming language.
     221
     222The result of this project is a language that is largely backwards compatible with C11~\cite{C11}, but fixing some of the well known C problems and containing many modern language features.
     223Without significant extension to the C programming language, it is becoming unable to cope with the needs of modern programming problems and programmers;
    183224as a result, it will fade into disuse.
    184225Considering the large body of existing C code and programmers, there is significant impetus to ensure C is transformed into a modern programming language.
     
    193234This feature allows users of \CFA to take advantage of the existing panoply of C libraries from inside their \CFA code.
    194235In fact, one of the biggest issues for any new programming language is establishing a minimum level of library code to support a large body of activities.
    195 Programming-language developers often state that adequate library support takes more work than designing and implementing the language itself.
     236Language developers often state that adequate library support takes more work than designing and implementing the language itself.
    196237Like \CC, \CFA starts with immediate access to all exiting C libraries, and in many cases, can easily wrap library routines with simpler and safer interfaces, at very low cost.
     238Hence, \CFA begins by leveraging the large repository of C libraries with little cost.
    197239
    198240However, it is necessary to differentiate between C and \CFA code because of name overloading, as for \CC.
    199 For example, the C math-library provides the following routines for computing the absolute value of the basic type: \lstinline@abs@, \lstinline@labs@, \lstinline@llabs@, \lstinline@fabs@, \lstinline@fabsf@, \lstinline@fabsl@, \lstinline@cabsf@, \lstinline@cabs@, and \lstinline@cabsl@.
    200 Whereas, \CFA wraps each of these routines into one with the common name \lstinline@abs@.
     241For example, the C math-library provides the following routines for computing the absolute value of the basic types: ©abs©, ©labs©, ©llabs©, ©fabs©, ©fabsf©, ©fabsl©, ©cabsf©, ©cabs©, and ©cabsl©.
     242Whereas, \CFA wraps each of these routines into ones with the common name ©abs©:
    201243\begin{lstlisting}
    202244char abs( char );
    203245extern "C" {
    204 int abs( int );                         // use default C routine for int
     246int abs( int );                                 // use default C routine for int
    205247} // extern "C"
    206248long int abs( long int );
     
    213255long double _Complex abs( long double _Complex );
    214256\end{lstlisting}
    215 The problem is the name clash between the library routine \lstinline@abs@ and the \CFA names \lstinline@abs@.
    216 Hence, names appearing in an \lstinline@extern "C"@ block have \newterm{C linkage}.
     257The problem is the name clash between the library routine ©abs© and the \CFA names ©abs©.
     258Hence, names appearing in an ©extern "C"© block have \newterm{C linkage}.
    217259Then overloading polymorphism uses a mechanism called \newterm{name mangling} to create unique names that are different from C names, which are not mangled.
    218260Hence, there is the same need as in \CC, to know if a name is a C or \CFA name, so it can be correctly formed.
    219261There is no way around this problem, other than C's approach of creating unique names for each pairing of operation and type.
    220262This example strongly illustrates a core idea in \CFA: \emph{the power of a name}.
    221 The name ``\lstinline@abs@'' evokes the notion of absolute value, and many mathematical types provide the notion of absolute value.
    222 Hence, knowing the name \lstinline@abs@ should be sufficient to apply it to any type where it is applicable.
     263The name ``©abs©'' evokes the notion of absolute value, and many mathematical types provide the notion of absolute value.
     264Hence, knowing the name ©abs© should be sufficient to apply it to any type where it is applicable.
    223265The time savings and safety of using one name uniformly versus $N$ unique names should not be underestimated.
    224266
    225267
    226 \section{Compiling \CFA}
    227 
    228 The command \lstinline@cfa@ is used to compile \CFA program(s).
    229 This command works like the GNU \lstinline@gcc@\index{gcc} command, e.g.:
    230 \begin{lstlisting}
    231 cfa [ gcc-options ] C/@{\CFA}@-files [ assembler/loader-files ]
    232 \end{lstlisting}
    233 By default, \CFA programs having the following \lstinline@gcc@ flags turned on:
     268\section[Compiling CFA Program]{Compiling \CFA Program}
     269
     270The command ©cfa© is used to compile \CFA program(s), and is based on the GNU ©gcc©\index{gcc} command, e.g.:
     271\begin{lstlisting}
     272cfa§\indexc{cfa}\index{compilation!cfa@©cfa©}§ [ gcc-options ] C/§\CFA§-files [ assembler/loader-files ]
     273\end{lstlisting}
     274By default, \CFA programs having the following ©gcc© flags turned on:
    234275\begin{description}
    235 \item
    236 \hspace*{-4pt}\lstinline@-std=gnu99@
     276\item\hspace*{-0.6ex}\Indexc{-std=gnu99}\index{compilation option!-std=gnu99@{©-std=gnu99©}}
    237277The 1999 C standard plus GNU extensions.
     278\item\hspace*{-0.6ex}\Indexc{-fgnu89-¶inline¶}\index{compilation option!-fgnu89-inline@{©-fgnu89-¶inline¶©}}
     279Use the traditional GNU semantics for inline routines in C99 mode, which allows inline routines in header files.
    238280\end{description}
    239281The following new \CFA option is available:
    240282\begin{description}
    241 \item
    242 \hspace*{-4pt}\lstinline@-CFA@
     283\item\hspace*{-0.6ex}\Indexc{-CFA}\index{compilation option!-CFA@{©-CFA©}}
    243284Only the C preprocessor and the \CFA translator steps are performed and the transformed program is written to standard output, which makes it possible to examine the code generated by the \CFA translator.
    244285\end{description}
    245286
     287The following preprocessor variables are available:
     288\begin{description}
     289\item\hspace*{-0.6ex}\Indexc{__CFA__}\index{preprocessor variables!__CFA__@{©__CFA__©}}
     290is always available during preprocessing and its value is the current major \Index{version number} of \CFA.\footnote{
     291The C preprocessor allows only integer values in a preprocessor variable so a value like ``\Version'' is not allowed.
     292Hence, the need to have three variables for the major, minor and patch version number.}
     293
     294\item\hspace*{-0.6ex}\Indexc{__CFA_MINOR__}\index{preprocessor variables!__CFA_MINOR__@{©__CFA_MINOR__©}}
     295is always available during preprocessing and its value is the current minor \Index{version number} of \CFA.
     296
     297\item\hspace*{-0.6ex}\Indexc{__CFA_PATCH__}\index{preprocessor variables!__CFA_PATCH__@©__CFA_PATCH__©}
     298is always available during preprocessing and its value is the current patch \Index{version number} of \CFA.
     299
     300\item\hspace*{-0.6ex}\Indexc{__CFA__}\index{preprocessor variables!__CFA__@©__CFA__©} and \Indexc{__CFORALL__}\index{preprocessor variables!__CFORALL__@©__CFORALL__©}
     301are always available during preprocessing and have no value.
     302\end{description}
     303
     304These preprocessor variables allow conditional compilation of programs that must work differently in these situations.
     305For example, to toggle between C and \CFA extensions, using the following:
     306\begin{lstlisting}
     307#ifndef __CFORALL__
     308#include <stdio.h>                              // C header file
     309#else
     310#include <fstream>                              // §\CFA{}§ header file
     311#endif
     312\end{lstlisting}
     313which conditionally includes the correct header file, if the program is compiled using ©gcc© or ©cfa©.
     314
    246315
    247316\section{Underscores in Constants}
     
    249318Numeric constants are extended to allow \Index{underscore}s within constants\index{constant!underscore}, e.g.:
    250319\begin{lstlisting}
    251 2`_`147`_`483`_`648;                            // decimal constant
    252 56_ul;                                          // decimal unsigned long constant
    253 0_377;                                          // octal constant
    254 0x_ff_ff;                                       // hexadecimal constant
    255 0x_ef3d_aa5c;                           // hexadecimal constant
    256 3.141_592_654;                          // floating point constant
    257 10_e_+1_00;                                     // floating point constant
    258 0x_ff_ff_p_3;                           // hexadecimal floating point
    259 0x_1.ffff_ffff_p_128_l;         // hexadecimal floating point long constant
    260 L_"\x_ff_ee";                           // wide character constant
     3202®_®147®_®483®_®648;                                    // decimal constant
     32156_ul;                                                  // decimal unsigned long constant
     3220_377;                                                  // octal constant
     3230x_ff_ff;                                               // hexadecimal constant
     3240x_ef3d_aa5c;                                   // hexadecimal constant
     3253.141_592_654;                                  // floating point constant
     32610_e_+1_00;                                             // floating point constant
     3270x_ff_ff_p_3;                                   // hexadecimal floating point
     3280x_1.ffff_ffff_p_128_l;                 // hexadecimal floating point long constant
     329L_"\x_ff_ee";                                   // wide character constant
    261330\end{lstlisting}
    262331The rules for placement of underscores is as follows:
    263332\begin{enumerate}
    264333\item
    265 A sequence of underscores is disallowed, e.g., \lstinline@12__34@ is invalid.
     334A sequence of underscores is disallowed, e.g., ©12__34© is invalid.
    266335\item
    267336Underscores may only appear within a sequence of digits (regardless of the digit radix).
    268 In other words, an underscore cannot start or end a sequence of digits, e.g., \lstinline@_1@, \lstinline@1_@ and \lstinline@_1_@ are invalid (actually, the 1st and 3rd examples are identifier names).
     337In other words, an underscore cannot start or end a sequence of digits, e.g., ©_1©, ©1_© and ©_1_© are invalid (actually, the 1st and 3rd examples are identifier names).
    269338\item
    270339A numeric prefix may end with an underscore;
    271340a numeric infix may begin and/or end with an underscore;
    272341a numeric suffix may begin with an underscore.
    273 For example, the octal \lstinline@0@ or hexadecimal \lstinline@0x@ prefix may end with an underscore \lstinline@0_377@ or \lstinline@0x_ff@;
    274 the exponent infix \lstinline@E@ may start or end with an underscore \lstinline@1.0_E10@, \lstinline@1.0E_10@ or \lstinline@1.0_E_10@;
    275 the type suffixes \lstinline@U@, \lstinline@L@, etc. may start with an underscore \lstinline@1_U@, \lstinline@1_ll@ or \lstinline@1.0E10_f@.
     342For example, the octal ©0© or hexadecimal ©0x© prefix may end with an underscore ©0_377© or ©0x_ff©;
     343the exponent infix ©E© may start or end with an underscore ©1.0_E10©, ©1.0E_10© or ©1.0_E_10©;
     344the type suffixes ©U©, ©L©, etc. may start with an underscore ©1_U©, ©1_ll© or ©1.0E10_f©.
    276345\end{enumerate}
    277346It is significantly easier to read and enter long constants when they are broken up into smaller groupings (most cultures use comma or period among digits for the same purpose).
    278 This extension is backwards compatible, matches with the use of underscore in variable names, and appears in Ada and Java.
     347This extension is backwards compatible, matches with the use of underscore in variable names, and appears in Ada and Java 8.
    279348
    280349
     
    284353C declaration syntax is notoriously confusing and error prone.
    285354For example, many C programmers are confused by a declaration as simple as:
    286 \begin{lstlisting}
    287 int *x[ 10 ]
    288 \end{lstlisting}
    289 Is this a pointer to an array of 10 integers or an array of 10 pointers to integers?
     355\begin{quote2}
     356\begin{tabular}{@{}ll@{}}
     357\begin{lstlisting}
     358int *x[5]
     359\end{lstlisting}
     360&
     361\raisebox{-0.75\totalheight}{\input{Cdecl}}
     362\end{tabular}
     363\end{quote2}
     364Is this an array of 5 pointers to integers or a pointer to an array of 5 integers?
    290365Another example of confusion results from the fact that a routine name and its parameters are embedded within the return type, mimicking the way the return value is used at the routine's call site.
    291366For example, a routine returning a pointer to an array of integers is defined and used in the following way:
    292367\begin{lstlisting}
    293 int (*f())[ 10 ] {...};
    294 ... (*f())[  3 ] += 1;  // definition mimics usage
     368int (*f())[5] {...};                    // definition mimics usage
     369... (*f())[3] += 1;
    295370\end{lstlisting}
    296371Essentially, the return type is wrapped around the routine name in successive layers (like an onion).
    297372While attempting to make the two contexts consistent was a laudable goal, it has not worked out in practice.
    298373
    299 \CFA provides its own type, variable and routine declarations, using a slightly different syntax.
    300 The new declarations place modifiers to the left of the base type, while C declarations place modifiers to the right of the base type.
     374\CFA provides its own type, variable and routine declarations, using a different syntax.
     375The new declarations place qualifiers to the left of the base type, while C declarations place qualifiers to the right of the base type.
     376In the following example, \R{red} is for the base type and \B{blue} is for the qualifiers.
     377The \CFA declarations move the qualifiers to the left of the base type, i.e., blue to the left of the red, while the qualifiers have the same meaning but are ordered left to left to right to specify the variable's type.
     378\begin{quote2}
     379\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     380\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     381\begin{lstlisting}
     382ß[5] *ß ®int® x1;
     383ß* [5]ß ®int® x2;
     384ß[* [5] int]ß f®( int p )®;
     385\end{lstlisting}
     386&
     387\begin{lstlisting}
     388®int® ß*ß x1 ß[5]ß;
     389®int® ß(*ßx2ß)[5]ß;
     390ßint (*ßf®( int p )®ß)[5]ß;
     391\end{lstlisting}
     392\end{tabular}
     393\end{quote2}
    301394The only exception is bit field specification, which always appear to the right of the base type.
    302 C and the new \CFA declarations may appear together in the same program block, but cannot be mixed within a specific declaration.
    303 
    304 In \CFA declarations, the same tokens are used as in C: the character \lstinline@*@ is used to indicate a pointer, square brackets \lstinline@[@\,\lstinline@]@ are used to represent an array, and parentheses \lstinline@()@ are used to indicate a routine parameter.
    305 However, unlike C, \CFA type declaration tokens are specified from left to right and the entire type specification is distributed across all variables in the declaration list.
    306 For instance, variables \lstinline@x@ and \lstinline@y@ of type pointer to integer are defined in \CFA as follows:
     395% Specifically, the character ©*© is used to indicate a pointer, square brackets ©[©\,©]© are used to represent an array or function return value, and parentheses ©()© are used to indicate a routine parameter.
     396However, unlike C, \CFA type declaration tokens are distributed across all variables in the declaration list.
     397For instance, variables ©x© and ©y© of type pointer to integer are defined in \CFA as follows:
    307398\begin{quote2}
    308 \begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
    309 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
    310 \begin{lstlisting}
    311 `* int x, y;`
     399\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     400\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     401\begin{lstlisting}
     402®*® int x, y;
    312403\end{lstlisting}
    313404&
    314405\begin{lstlisting}
    315 int *x, *y;
     406int ®*®x, ®*®y;
    316407\end{lstlisting}
    317408\end{tabular}
     
    319410Other examples are:
    320411\begin{quote2}
    321 \begin{tabular}{@{}l@{\hspace{30pt}}l@{\hspace{20pt}}l@{}}
    322 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c@{\hspace{20pt}}}{\textbf{C}}        \\
    323 \begin{lstlisting}
    324 [ 10 ] int z;
    325 [ 10 ] * char w;
    326 * [ 10 ] double v;
     412\begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
     413\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\
     414\begin{lstlisting}
     415[ 5 ] int z;
     416[ 5 ] * char w;
     417* [ 5 ] double v;
    327418struct s {
    328419        int f0:3;
    329420        * int f1;
    330         [ 10 ] * int f2;
     421        [ 5 ] * int f2;
    331422};
    332423\end{lstlisting}
    333424&
    334425\begin{lstlisting}
    335 int z[ 10 ];
    336 char *w[ 10 ];
    337 double (*v)[ 10 ];
     426int z[ 5 ];
     427char *w[ 5 ];
     428double (*v)[ 5 ];
    338429struct s {
    339430        int f0:3;
    340431        int *f1;
    341         int *f2[ 10 ]
     432        int *f2[ 5 ]
    342433};
    343434\end{lstlisting}
    344435&
    345436\begin{lstlisting}
    346 // array of 10 integers
    347 // array of 10 pointers to char
    348 // pointer to array of 10 doubles
     437// array of 5 integers
     438// array of 5 pointers to char
     439// pointer to array of 5 doubles
    349440
    350441// common bit field syntax
     
    356447\end{quote2}
    357448
    358 All type qualifiers, i.e., \lstinline@const@ and \lstinline@volatile@, are used in the normal way with the new declarations but appear left to right, e.g.:
     449All type qualifiers, e.g., ©const©, ©volatile©, etc., are used in the normal way with the new declarations and also appear left to right, e.g.:
    359450\begin{quote2}
    360 \begin{tabular}{@{}l@{\hspace{30pt}}l@{\hspace{20pt}}l@{}}
    361 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c@{\hspace{20pt}}}{\textbf{C}}        \\
     451\begin{tabular}{@{}l@{\hspace{1em}}l@{\hspace{1em}}l@{}}
     452\multicolumn{1}{c@{\hspace{1em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{1em}}}{\textbf{C}} \\
    362453\begin{lstlisting}
    363454const * const int x;
    364 const * [ 10 ] const int y;
     455const * [ 5 ] const int y;
    365456\end{lstlisting}
    366457&
    367458\begin{lstlisting}
    368459int const * const x;
    369 const int (* const y)[ 10 ]
     460const int (* const y)[ 5 ]
    370461\end{lstlisting}
    371462&
    372463\begin{lstlisting}
    373464// const pointer to const integer
    374 // const pointer to array of 10 const integers
     465// const pointer to array of 5 const integers
    375466\end{lstlisting}
    376467\end{tabular}
    377468\end{quote2}
    378 All declaration qualifiers, i.e., \lstinline@extern@, \lstinline@static@, etc., are used in the normal way with the new declarations but can only appear at the start of a \CFA routine declaration,\footnote{\label{StorageClassSpecifier}
     469All declaration qualifiers, e.g., ©extern©, ©static©, etc., are used in the normal way with the new declarations but can only appear at the start of a \CFA routine declaration,\footnote{\label{StorageClassSpecifier}
    379470The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature.~\cite[\S~6.11.5(1)]{C11}} e.g.:
    380471\begin{quote2}
    381 \begin{tabular}{@{}l@{\hspace{30pt}}l@{\hspace{20pt}}l@{}}
    382 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c@{\hspace{20pt}}}{\textbf{C}}        \\
    383 \begin{lstlisting}
    384 extern [ 10 ] int x;
     472\begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
     473\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\
     474\begin{lstlisting}
     475extern [ 5 ] int x;
    385476static * const int y;
    386477\end{lstlisting}
    387478&
    388479\begin{lstlisting}
    389 int extern x[ 10 ];
     480int extern x[ 5 ];
    390481const int static *y;
    391482\end{lstlisting}
    392483&
    393484\begin{lstlisting}
    394 // externally visible array of 10 integers
     485// externally visible array of 5 integers
    395486// internally visible pointer to constant int
    396487\end{lstlisting}
     
    398489\end{quote2}
    399490
    400 Unsupported are K\&R C declarations where the base type defaults to \lstinline@int@, if no type is specified\footnote{
    401 At least one type specifier shall be given in the declaration specifiers in each declaration, and in the specifier-qualifier list in each structure declaration and type name~\cite[\S~6.7.2(2)]{C11}},
     491Unsupported are K\&R C declarations where the base type defaults to ©int©, if no type is specified,\footnote{
     492At least one type specifier shall be given in the declaration specifiers in each declaration, and in the specifier-qualifier list in each structure declaration and type name~\cite[\S~6.7.2(2)]{C11}}
    402493e.g.:
    403494\begin{lstlisting}
    404 x;                                              // int x
    405 *y;                                             // int *y
    406 f( p1, p2 );                    // int f( int p1, int p2 );
    407 f( p1, p2 ) {}                  // int f( int p1, int p2 ) {}
    408 \end{lstlisting}
    409 
    410 As stated above, the two styles of declaration may appear together in the same block.
     495x;                                                              // int x
     496*y;                                                             // int *y
     497f( p1, p2 );                                    // int f( int p1, int p2 );
     498f( p1, p2 ) {}                                  // int f( int p1, int p2 ) {}
     499\end{lstlisting}
     500
     501Finally, new \CFA declarations may appear together with C declarations in the same program block, but cannot be mixed within a specific declaration.
    411502Therefore, a programmer has the option of either continuing to use traditional C declarations or take advantage of the new style.
    412503Clearly, both styles need to be supported for some time due to existing C-style header-files, particularly for UNIX systems.
    413504
    414505
    415 \section{Type Operators}
    416 
    417 The new declaration syntax can be used in other contexts where types are required, e.g., casts and the pseudo-routine \lstinline@sizeof@:
     506\section{Reference Pointers}
     507
     508Program variables are implicit pointers to memory locations generated by the compiler and automatically dereferenced, as in:
    418509\begin{quote2}
    419 \begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
    420 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
    421 \begin{lstlisting}
    422 y = (* int)x;
    423 i = sizeof([ 10 ] * int);
     510\begin{tabular}{@{}l|l@{}}
     511\multicolumn{1}{c|}{Variables} & \multicolumn{1}{c}{Compiler generated addresses (100, 104) and dereferencing} \\
     512\hline
     513\begin{lstlisting}
     514int x, y;
     515x = 3;
     516y = x;
    424517\end{lstlisting}
    425518&
    426519\begin{lstlisting}
    427 y = (int *)x;
    428 i = sizeof(int *[ 10 ]);
     520int * const x = (int *)100, * const y = (int *)104;
     521*x = 3;         // implicit dereference
     522*y = *x;
    429523\end{lstlisting}
    430524\end{tabular}
    431525\end{quote2}
     526A variable name only points to one location during its lifetime, i.e., it is a \Index{non-mutable} pointer.
     527For example, the variables ©x© and ©y© are constant pointers.
     528Variable addresses are usually not stored in memory and loaded before dereferencing;
     529instead, variable addresses are stored in instructions, so an instruction fetch implicitly gets the variable's address.
     530\begin{quote2}
     531\begin{tabular}{@{}l|l@{}}
     532\begin{lstlisting}
     533x = x + 1
     534&x = *(&x) + 1
     535(100) = *(100) + 1
     536\end{lstlisting}
     537&
     538\begin{lstlisting}
     539ld              r1,(100)                        // address of x
     540add             r1,1
     541st              r1,(100)                        // address of x
     542\end{lstlisting}
     543\end{tabular}
     544\end{quote2}
     545Finally, the non-mutable nature of variables and the fact that there is no storage for a variable address means pointer assignment is impossible.
     546Therefore, the expression ©x = y© only has one meaning, ©*x = *y©, i.e., copy the variable values, so explicitly writing the dereferences is unnecessary even though it occurs implicitly as part of instruction decoding.
     547
     548A variable name is generalized by a \newterm{pointer}, which is a mutable pointer variable that can point to more than one memory location during its life-time (like an integer variable versus a literal).
     549Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, e.g.:
     550\begin{lstlisting}
     551int x, y, z, ®*® p1, ®*® p2;
     552p1 = ®&®x;                                      // p1 points to x
     553p2 = p1;                                        // p2 also points to x
     554p1 = ®&®y;                                      // p1 points to y
     555p2 = p1 + 1;                            // p2 points to z, pointer arithmetic
     556\end{lstlisting}
     557In many cases, a pointer name is anonymous (dynamically computed), so it cannot be stored directly in an instruction like a variable name.
     558
     559Pointers have a duality: an address in memory or the value at that address.
     560In many cases, the compiler can infer which of these operations are needed:
     561\begin{lstlisting}
     562p2 = p1 + x;                            // compiler infers *p2 = *p1 + x;
     563\end{lstlisting}
     564because adding the integer value of ©x© to the address of ©p1© and storing the resulting address into ©p2© is an unlikely operation.
     565Algol68~\cite{Algol68} inferences pointer dereferencing to select the best meaning for each pointer usage.
     566However, there are ambiguous cases, especially when pointer arithmetic is possible, as in C:
     567\begin{lstlisting}
     568p1 = p2;                                        // p1 = p2 or *p1 = *p2
     569p1 = p1 + 1;                            // p1 = p1 + 1 or *p1 = *p1 + 1
     570\end{lstlisting}
     571
     572Most programming languages pick a default operation and supply an explicit operation to resolve the pointer-duality ambiguity.
     573In C, the default operation for pointers is manipulate the pointer value and the pointed-to value is explicitly accessed by dereferencing ©*©.
     574\begin{lstlisting}
     575p1 = p2;                                        // pointer value assignment
     576*p1 = *p1 + 1;                          // pointed-to value assignment/operation
     577\end{lstlisting}
     578which works well for low-level memory management, such as ©malloc©/©free©, where manipulation of addresses in the primary operation, and data is only occasionally accessed.
     579
     580However, in the majority of pointer usages, the pointed-to value is required rather than the pointer address.
     581\begin{lstlisting}
     582*p2 = ((*p1 + *p2) * (*p2 - *p1)) / (*p1 - *p2);
     583\end{lstlisting}
     584And, it is tedious and error prone to explicitly write the dereferencing, especially when pointer arithmetic with integer values is allowed.
     585It is better to have the compiler generate the dereferencing:
     586\begin{lstlisting}
     587p2 = ((p1 + p2) * (p2 - p1)) / (p1 - p2);
     588\end{lstlisting}
     589
     590To provide this capability, it is necessary to switch the default operation to resolve the pointer-duality ambiguity, which requires a new kind of pointer called a \newterm{reference} pointer.
     591\begin{lstlisting}
     592int x, y, z, ®&® r1, ®&® r2;    // & denotes reference pointer
     593r1 ®:=® &x;                                     // r1 points to x
     594r2 ®:=® &r1;                                    // r2 also points to x
     595r1 ®:=® &y;                                     // r1 points to y
     596r2 ®:=® &r1 + 1;                                // r2 points to z
     597r2 = ((r1 + r2) * (r2 - r1)) / (r1 - r2); // implicit dereferencing
     598\end{lstlisting}
     599Hence, a reference pointer behaves like a variable name for the current variable it is pointing-to, so dereferencing a reference pointer returns the address of its pointed-to value, i.e., the address in the reference pointer.
     600Notice, the explicit operator ©:=© to denote pointer assignment to a reference pointer to support both aspects of pointer duality.
     601Note, \CC deals with the pointer duality by making a reference pointer a constant (©const©), like a plain variable, so there is no reference assignment.
     602
     603Like pointers, it is possible to use ©const© qualifiers with a reference:
     604\begin{lstlisting}
     605const int cx = 5;                       // cannot change cx;
     606const int & r3 = &cx;           // cannot change what r3 is pointing to
     607r3 ®:=® &cx;                                    // can change r3
     608r3 = 7;                                         // error, cannot change cx
     609int & const r4 = &x;            // must be initialized, §\CC§ reference
     610r4 ®:=® &x;                                     // error, cannot change r4
     611const int & const r5 = &cx;     // must be initialized, §\CC§ reference
     612r5 = 7;                                         // error, cannot change cx
     613r5 ®:=® &cx;                                    // error, cannot change r5
     614\end{lstlisting}
     615Note, for type ©& const©, there is no pointer assignment, so ©r4 := &x© is disallowed, and the pointer value cannot be ©0©.
     616Since there is only one meaning for ©r4 = x©, which is to change the value of the variable pointed to by ©r4©, therefore:
     617\begin{itemize}
     618\item
     619it in impossible to take the address of ©r4© as it always means the address of what ©r4© is pointing to.
     620\item
     621the dereference at initialization is optional because there can only be one
     622\begin{lrbox}{\LstBox}%
     623\footnotesize%
     624\begin{lstlisting}%
     625void f( int p ) {...}
     626void (*fp)( int ) = &f;         // equivalent initialization
     627void (*fp)( int ) = f;          // missing dereference allowed
     628\end{lstlisting}%
     629\end{lrbox}%
     630meaning.\footnote{
     631This case is similar to initializing a routine pointer, where the routine constant should be dereferenced.
     632\newline
     633\usebox{\LstBox}
     634}% footnote
     635\begin{lstlisting}
     636int & const r4 = &x;            // equivalent initialization
     637int & const r4 = x;                     // missing dereference allowed
     638\end{lstlisting}
     639\end{itemize}
     640Similarly, when a ©const© reference is used for a parameters type, the call-site argument does not require a reference.
     641\begin{lstlisting}
     642void f( int & ri, int & const cri );
     643f( &x, x );                                     // reference not required for second argument
     644\end{lstlisting}
     645Within routine ©f©, it is possible to change an argument by changing the corresponding parameter, and parameter ©ri© can be locally reassigned within ©f©.
     646
     647Finally, when a reference parameter has a ©const© value, it is possible to pass literals and expressions.
     648\begin{lstlisting}
     649void g( const int & ri, const int & const cri );
     650f( &3, 3 );
     651f( &(x + y), x + y );
     652\end{lstlisting}
     653At the call site, the compiler implicitly creates the necessary temporary that is subsequently pointed to by the reference parameter.
     654Hence, changing the parameter only changes the temporary at the call site.
     655For the non-©const© parameter, requiring the reference on the literal or expression makes it clear that nothing is changing at the call site and allows the call to proceed, where other languages require the programmer to explicitly create the temporary for the argument.
     656
     657\section{Type Operators}
     658
     659The new declaration syntax can be used in other contexts where types are required, e.g., casts and the pseudo-routine ©sizeof©:
     660\begin{quote2}
     661\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     662\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     663\begin{lstlisting}
     664y = (®* int®)x;
     665i = sizeof(®[ 5 ] * int®);
     666\end{lstlisting}
     667&
     668\begin{lstlisting}
     669y = (®int *®)x;
     670i = sizeof(®int *[ 5 ]®);
     671\end{lstlisting}
     672\end{tabular}
     673\end{quote2}
    432674
    433675
     
    435677
    436678\CFA also supports a new syntax for routine definition, as well as ISO C and K\&R routine syntax.
    437 The point of the new syntax is to allow returning multiple values from a routine~\cite{CLU,Galletly96}, e.g.:
    438 \begin{lstlisting}
    439 `[ int o1, int o2, char o3 ]` f( int i1, char i2, char i3 ) {
    440         @\emph{routine body}@
    441 }
    442 \end{lstlisting}
    443 where routine \lstinline@f@ has three output (return values) and three input parameters.
     679The point of the new syntax is to allow returning multiple values from a routine~\cite{Galletly96,CLU}, e.g.:
     680\begin{lstlisting}
     681®[ int o1, int o2, char o3 ]® f( int i1, char i2, char i3 ) {
     682        §\emph{routine body}§
     683}
     684\end{lstlisting}
     685where routine ©f© has three output (return values) and three input parameters.
    444686Existing C syntax cannot be extended with multiple return types because it is impossible to embed a single routine name within multiple return type specifications.
    445687
    446 In detail, the brackets, \lstinline@[]@, enclose the result type, where each return value is named and that name is a local variable of the particular return type.\footnote{
     688In detail, the brackets, ©[]©, enclose the result type, where each return value is named and that name is a local variable of the particular return type.\footnote{
    447689Michael Tiemann, with help from Doug Lea, provided named return values in g++, circa 1989.}
    448690The value of each local return variable is automatically returned at routine termination.
    449691Declaration qualifiers can only appear at the start of a routine definition, e.g.:
    450692\begin{lstlisting}
    451 extern [ int x ] g( int y ) {@\,@}
     693®extern® [ int x ] g( int y ) {§\,§}
    452694\end{lstlisting}
    453695Lastly, if there are no output parameters or input parameters, the brackets and/or parentheses must still be specified;
    454696in both cases the type is assumed to be void as opposed to old style C defaults of int return type and unknown parameter types, respectively, as in:
    455697\begin{lstlisting}
    456 [@\,@] g(@\,@);                         // no input or output parameters
    457 [ void ] g( void );                     // no input or output parameters
     698[§\,§] g();                                                     // no input or output parameters
     699[ void ] g( void );                             // no input or output parameters
    458700\end{lstlisting}
    459701
     
    462704[ i, j, ch ] = f( 3, 'a', ch );
    463705\end{lstlisting}
    464 The list of return values from f and the grouping on the left-hand side of the assignment is called a tuple and discussed in Section 12.
     706The list of return values from f and the grouping on the left-hand side of the assignment is called a \newterm{return list} and discussed in Section 12.
    465707
    466708\CFA style declarations cannot be used to declare parameters for K\&R style routine definitions because of the following ambiguity:
    467709\begin{lstlisting}
    468 int (*f(x))[ 10 ] int x; {}
    469 \end{lstlisting}
    470 The string ``\lstinline@int (*f(x))[ 10 ]@'' declares a K\&R style routine of type returning a pointer to an array of 10 integers, while the string ``\lstinline@[ 10 ] int x@'' declares a \CFA style parameter x of type array of 10 integers.
    471 Since the strings overlap starting with the open bracket, \lstinline@[@, there is an ambiguous interpretation for the string.
     710int (*f(x))[ 5 ] int x; {}
     711\end{lstlisting}
     712The string ``©int (*f(x))[ 5 ]©'' declares a K\&R style routine of type returning a pointer to an array of 5 integers, while the string ``©[ 5 ] int x©'' declares a \CFA style parameter x of type array of 5 integers.
     713Since the strings overlap starting with the open bracket, ©[©, there is an ambiguous interpretation for the string.
    472714As well, \CFA-style declarations cannot be used to declare parameters for C-style routine-definitions because of the following ambiguity:
    473715\begin{lstlisting}
    474716typedef int foo;
    475 int f( int (* foo) );           // foo is redefined as a parameter name
    476 \end{lstlisting}
    477 The string ``\lstinline@int (* foo)@'' declares a C-style named-parameter of type pointer to an integer (the parenthesis are superfluous), while the same string declares a \CFA style unnamed parameter of type routine returning integer with unnamed parameter of type pointer to foo.
    478 The redefinition of a type name in a parameter list is the only context in C where the character \lstinline@*@ can appear to the left of a type name, and \CFA relies on all type modifier characters appearing to the right of the type name.
     717int f( int (* foo) );                   // foo is redefined as a parameter name
     718\end{lstlisting}
     719The string ``©int (* foo)©'' declares a C-style named-parameter of type pointer to an integer (the parenthesis are superfluous), while the same string declares a \CFA style unnamed parameter of type routine returning integer with unnamed parameter of type pointer to foo.
     720The redefinition of a type name in a parameter list is the only context in C where the character ©*© can appear to the left of a type name, and \CFA relies on all type qualifier characters appearing to the right of the type name.
    479721The inability to use \CFA declarations in these two contexts is probably a blessing because it precludes programmers from arbitrarily switching between declarations forms within a declaration contexts.
    480722
    481723C-style declarations can be used to declare parameters for \CFA style routine definitions, e.g.:
    482724\begin{lstlisting}
    483 [ int ] f( * int, int * );      // returns an integer, accepts 2 pointers to integers
    484 [ * int, int * ] f( int );      // returns 2 pointers to integers, accepts an integer
     725[ int ] f( * int, int * );              // returns an integer, accepts 2 pointers to integers
     726[ * int, int * ] f( int );              // returns 2 pointers to integers, accepts an integer
    485727\end{lstlisting}
    486728The reason for allowing both declaration styles in the new context is for backwards compatibility with existing preprocessor macros that generate C-style declaration-syntax, as in:
    487729\begin{lstlisting}
    488730#define ptoa( n, d ) int (*n)[ d ]
    489 int f( ptoa(p,10) ) ...         // expands to int f( int (*p)[ 10 ] )
    490 [ int ] f( ptoa(p,10) ) ...     // expands to [ int ] f( int (*p)[ 10 ] )
     731int f( ptoa( p, 5 ) ) ...               // expands to int f( int (*p)[ 5 ] )
     732[ int ] f( ptoa( p, 5 ) ) ...   // expands to [ int ] f( int (*p)[ 5 ] )
    491733\end{lstlisting}
    492734Again, programmers are highly encouraged to use one declaration form or the other, rather than mixing the forms.
    493735
    494736
    495 \subsection{Returning Values}
    496 
    497 Named return values handle the case where it is necessary to define a local variable whose value is then returned in a \lstinline@return@ statement, as in:
     737\subsection{Named Return Values}
     738
     739\Index{Named return values} handle the case where it is necessary to define a local variable whose value is then returned in a ©return© statement, as in:
    498740\begin{lstlisting}
    499741int f() {
     
    503745}
    504746\end{lstlisting}
    505 Because the value in the return variable is automatically returned when a \CFA routine terminates, the \lstinline@return@ statement \emph{does not} contain an expression, as in:
    506 \begin{lstlisting}
    507 `[ int x ]` f() {
    508         ... x = 0; ... x = y; ...
    509         `return;` // implicitly return x
    510 }
    511 \end{lstlisting}
    512 When the return is encountered, the current value of \lstinline@x@ is returned to the calling routine.
    513 As well, ``falling off the end'' of a routine without a \lstinline@return@ statement is permitted, as in:
    514 \begin{lstlisting}
    515 [ int x ] f() {
    516         ... x = 0; ... x = y; ...
    517 } // implicitly return x
    518 \end{lstlisting}
    519 In this case, the current value of \lstinline@x@ is returned to the calling routine just as if a \lstinline@return@ had been encountered.
     747Because the value in the return variable is automatically returned when a \CFA routine terminates, the ©return© statement \emph{does not} contain an expression, as in:
     748\newline
     749\begin{minipage}{\linewidth}
     750\begin{lstlisting}
     751®[ int x, int y ]® f() {
     752        int z;
     753        ... x = 0; ... y = z; ...
     754        ®return;® // implicitly return x, y
     755}
     756\end{lstlisting}
     757\end{minipage}
     758\newline
     759When the return is encountered, the current values of ©x© and ©y© are returned to the calling routine.
     760As well, ``falling off the end'' of a routine without a ©return© statement is permitted, as in:
     761\begin{lstlisting}
     762[ int x, int y ] f() {
     763        ...
     764} // implicitly return x, y
     765\end{lstlisting}
     766In this case, the current values of ©x© and ©y© are returned to the calling routine just as if a ©return© had been encountered.
    520767
    521768
     
    525772as well, parameter names are optional, e.g.:
    526773\begin{lstlisting}
    527 [ int x ] f ();                         // returning int with no parameters
    528 [ * int ] g (int y);            // returning pointer to int with int parameter
    529 [ ] h (int,char);                       // returning no result with int and char parameters
    530 [ * int,int ] j (int);          // returning pointer to int and int, with int parameter
     774[ int x ] f ();                                 // returning int with no parameters
     775[ * int ] g (int y);                    // returning pointer to int with int parameter
     776[ ] h (int,char);                               // returning no result with int and char parameters
     777[ * int,int ] j (int);                  // returning pointer to int and int, with int parameter
    531778\end{lstlisting}
    532779This syntax allows a prototype declaration to be created by cutting and pasting source text from the routine definition header (or vice versa).
    533780It is possible to declare multiple routine-prototypes in a single declaration, but the entire type specification is distributed across \emph{all} routine names in the declaration list (see~\VRef{s:Declarations}), e.g.:
    534781\begin{quote2}
    535 \begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
    536 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
     782\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     783\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
    537784\begin{lstlisting}
    538785[ int ] f(int), g;
     
    563810for example, the following is incorrect:
    564811\begin{lstlisting}
    565 * [ int x ] f () fp;            // routine name "f" is not allowed
     812* [ int x ] f () fp;                    // routine name "f" is not allowed
    566813\end{lstlisting}
    567814
     
    696943While in theory default arguments can be simulated with overloading, as in:
    697944\begin{quote2}
    698 \begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
    699 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{default arguments}}  & \multicolumn{1}{c}{\textbf{overloading}}      \\
     945\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     946\multicolumn{1}{c@{\hspace{3em}}}{\textbf{default arguments}}   & \multicolumn{1}{c}{\textbf{overloading}}      \\
    700947\begin{lstlisting}
    701948void p( int x, int y = 2, int z = 3 ) {...}
     
    730977\subsection{Type Nesting}
    731978
    732 \CFA allows \Index{type nesting}, and type qualification of the nested types, where as C hoists\index{type!hoisting} (refactors) nested types into the enclosing scope and has no type qualification.
    733 \begin{quote2}
    734 \begin{tabular}{@{}l@{\hspace{30pt}}l|l@{}}
    735 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{C Type Nesting}}     & \multicolumn{1}{c}{\textbf{C Implicit Hoisting}}      & \multicolumn{1}{|c}{\textbf{\CFA}}    \\
     979\CFA allows \Index{type nesting}, and type qualification of the nested types (see \VRef[Figure]{f:TypeNestingQualification}), where as C hoists\index{type hoisting} (refactors) nested types into the enclosing scope and has no type qualification.
     980\begin{figure}
     981\begin{tabular}{@{}l@{\hspace{3em}}l|l@{}}
     982\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C Type Nesting}}      & \multicolumn{1}{c}{\textbf{C Implicit Hoisting}}      & \multicolumn{1}{|c}{\textbf{\CFA}}    \\
    736983\hline
    737984\begin{lstlisting}
     
    7851032
    7861033int fred() {
    787         s.t.c = `S.`R;  // type qualification
    788         struct `S.`T t = { `S.`R, 1, 2 };
    789         enum `S.`C c;
    790         union `S.T.`U u;
     1034        s.t.c = ®S.®R;  // type qualification
     1035        struct ®S.®T t = { ®S.®R, 1, 2 };
     1036        enum ®S.®C c;
     1037        union ®S.T.®U u;
    7911038}
    7921039\end{lstlisting}
    7931040\end{tabular}
    794 \end{quote2}
    795 In the left example in C, types \lstinline@C@, \lstinline@U@ and \lstinline@T@ are implicitly hoisted outside of type \lstinline@S@ into the containing block scope.
    796 In the right example in \CFA, the types are not hoisted and accessed using the field-selection operator ``\lstinline@.@'' for type qualification, as does Java, rather than the \CC type-selection operator ``\lstinline@::@''.
     1041\caption{Type Nesting / Qualification}
     1042\label{f:TypeNestingQualification}
     1043\end{figure}
     1044In the left example in C, types ©C©, ©U© and ©T© are implicitly hoisted outside of type ©S© into the containing block scope.
     1045In the right example in \CFA, the types are not hoisted and accessed using the field-selection operator ``©.©'' for type qualification, as does Java, rather than the \CC type-selection operator ``©::©''.
    7971046
    7981047
     
    8071056which can be used to sort in ascending and descending order by locally redefining the less-than operator into greater-than.
    8081057\begin{lstlisting}
    809 const unsigned int size = 10;
     1058const unsigned int size = 5;
    8101059int ia[size];
    8111060...                                             // assign values to array ia
    8121061qsort( ia, size );              // sort ascending order using builtin ?<?
    8131062{
    814         `int ?<?( int x, int y ) { return x > y; }` // nested routine
     1063        ®int ?<?( int x, int y ) { return x > y; }® // nested routine
    8151064        qsort( ia, size );      // sort descending order by local redefinition
    8161065}
     
    8191068Nested routines are not first-class, meaning a nested routine cannot be returned if it has references to variables in its enclosing blocks;
    8201069the only exception is references to the external block of the translation unit, as these variables persist for the duration of the program.
    821 The following program in undefined in \CFA (and \lstinline@gcc@\index{gcc})
     1070The following program in undefined in \CFA (and ©gcc©\index{gcc})
    8221071\begin{lstlisting}
    8231072[* [int]( int )] foo() {                // int (*foo())( int )
    824         int `i` = 7;
     1073        int ®i® = 7;
    8251074        int bar( int p ) {
    826                 `i` += 1;                                       // dependent on local variable
    827                 sout | `i` | endl;
     1075                ®i® += 1;                                       // dependent on local variable
     1076                sout | ®i® | endl;
    8281077        }
    8291078        return bar;                                     // undefined because of local dependence
     
    8391088
    8401089
    841 \section{Tuples}
     1090\section{Lexical List}
    8421091
    8431092In C and \CFA, lists of elements appear in several contexts, such as the parameter list for a routine call.
    8441093(More contexts are added shortly.)
    845 A list of such elements is called a tuple.
    846 The general syntax of a tuple is:
    847 \begin{lstlisting}
    848 [ $\emph{exprlist}$ ]
    849 \end{lstlisting}
    850 where \lstinline@$\emph{exprlist}$@ is a list of one or more expressions separated by commas.
    851 The brackets, \lstinline$[]$, allow differentiating between tuples and expressions containing the C comma operator.
    852 The following are examples of tuples:
     1094A list of such elements is called a \newterm{lexical list}.
     1095The general syntax of a lexical list is:
     1096\begin{lstlisting}
     1097[ §\emph{exprlist}§ ]
     1098\end{lstlisting}
     1099where ©$\emph{exprlist}$© is a list of one or more expressions separated by commas.
     1100The brackets, ©[]©, allow differentiating between lexical lists and expressions containing the C comma operator.
     1101The following are examples of lexical lists:
    8531102\begin{lstlisting}
    8541103[ x, y, z ]
     
    8561105[ v+w, x*y, 3.14159, f() ]
    8571106\end{lstlisting}
    858 Tuples are permitted to contain sub-tuples (i.e., nesting), such as \lstinline@[ [ 14, 21 ], 9 ]@, which is a 2-element tuple whose first element is itself a tuple.
     1107Tuples are permitted to contain sub-tuples (i.e., nesting), such as ©[ [ 14, 21 ], 9 ]©, which is a 2-element tuple whose first element is itself a tuple.
    8591108Note, a tuple is not a record (structure);
    8601109a record denotes a single value with substructure, whereas a tuple is multiple values with no substructure (see flattening coercion in Section 12.1).
     
    8661115The general syntax of a tuple type is:
    8671116\begin{lstlisting}
    868 [ @\emph{typelist}@ ]
    869 \end{lstlisting}
    870 where \lstinline@$\emph{typelist}$@ is a list of one or more legal \CFA or C type specifications separated by commas, which may include other tuple type specifications.
     1117[ §\emph{typelist}§ ]
     1118\end{lstlisting}
     1119where ©$\emph{typelist}$© is a list of one or more legal \CFA or C type specifications separated by commas, which may include other tuple type specifications.
    8711120Examples of tuple types include:
    8721121\begin{lstlisting}
     
    8741123[ double, double, double ]
    8751124[ * int, int * ]                // mix of CFA and ANSI
    876 [ * [ 10 ] int, * * char, * [ [ int, int ] ] (int, int) ]
    877 \end{lstlisting}
    878 Like tuples, tuple types may be nested, such as \lstinline@[ [ int, int ], int ]@, which is a 2-element tuple type whose first element is itself a tuple type.
     1125[ * [ 5 ] int, * * char, * [ [ int, int ] ] (int, int) ]
     1126\end{lstlisting}
     1127Like tuples, tuple types may be nested, such as ©[ [ int, int ], int ]©, which is a 2-element tuple type whose first element is itself a tuple type.
    8791128
    8801129Examples of declarations using tuple types are:
     
    9121161tuple does not have structure like a record; a tuple is simply converted into a list of components.
    9131162\begin{rationale}
    914 The present implementation of \CFA does not support nested routine calls when the inner routine returns multiple values; i.e., a statement such as \lstinline@g( f() )@ is not supported.
     1163The present implementation of \CFA does not support nested routine calls when the inner routine returns multiple values; i.e., a statement such as ©g( f() )© is not supported.
    9151164Using a temporary variable to store the  results of the inner routine and then passing this variable to the outer routine works, however.
    9161165\end{rationale}
     
    9411190\begin{rationale}
    9421191Unfortunately, C's syntax for subscripts precluded treating them as tuples.
    943 The C subscript list has the form \lstinline@[i][j]...@ and not \lstinline@i, j, ...]@.
    944 Therefore, there is no syntactic way for a routine returning multiple values to specify the different subscript values, e.g., \lstinline@f[g()]@ always means a single subscript value because there is only one set of brackets.
    945 Fixing this requires a major change to C because the syntactic form \lstinline@M[i, j, k]@ already has a particular meaning: \lstinline@i, j, k@ is a comma expression.
     1192The C subscript list has the form ©[i][j]...© and not ©[i, j, ...]©.
     1193Therefore, there is no syntactic way for a routine returning multiple values to specify the different subscript values, e.g., ©f[g()]© always means a single subscript value because there is only one set of brackets.
     1194Fixing this requires a major change to C because the syntactic form ©M[i, j, k]© already has a particular meaning: ©i, j, k© is a comma expression.
    9461195\end{rationale}
    9471196
     
    9621211[ a, b, c, d ] = w
    9631212\end{lstlisting}
    964 \lstinline@w@ is implicitly opened to yield a tuple of four values, which are then assigned individually.
     1213©w© is implicitly opened to yield a tuple of four values, which are then assigned individually.
    9651214
    9661215A \newterm{flattening coercion} coerces a nested tuple, i.e., a tuple with one or more components, which are themselves tuples, into a flattened tuple, which is a tuple whose components are not tuples, as in:
     
    9701219First the right-hand tuple is flattened and then the values are assigned individually.
    9711220Flattening is also performed on tuple types.
    972 For example, the type \lstinline@[ int, [ int, int ], int ]@ can be coerced, using flattening, into the type \lstinline@[ int, int, int, int ]@.
     1221For example, the type ©[ int, [ int, int ], int ]© can be coerced, using flattening, into the type ©[ int, int, int, int ]©.
    9731222
    9741223A \newterm{structuring coercion} is the opposite of flattening;
    9751224a tuple is structured into a more complex nested tuple.
    976 For example, structuring the tuple \lstinline@[ 1, 2, 3, 4 ]@ into the tuple \lstinline@[ 1, [ 2, 3 ], 4 ]@ or the tuple type \lstinline@[ int, int, int, int ]@ into the tuple type \lstinline@[ int, [ int, int ], int ]@.
     1225For example, structuring the tuple ©[ 1, 2, 3, 4 ]© into the tuple ©[ 1, [ 2, 3 ], 4 ]© or the tuple type ©[ int, int, int, int ]© into the tuple type ©[ int, [ int, int ], int ]©.
    9771226In the following example, the last assignment illustrates all the tuple coercions:
    9781227\begin{lstlisting}
     
    9821231\end{lstlisting}
    9831232Starting on the right-hand tuple in the last assignment statement, w is opened, producing a tuple of four values;
    984 therefore, the right-hand tuple is now the tuple \lstinline@[ [ 1, 2, 3, 4 ], 5 ]@.
    985 This tuple is then flattened, yielding \lstinline@[ 1, 2, 3, 4, 5 ]@, which is structured into \lstinline@[ 1, [ 2, 3, 4, 5 ] ]@ to match the tuple type of the left-hand side.
    986 The tuple \lstinline@[ 2, 3, 4, 5 ]@ is then closed to create a tuple value.
    987 Finally, \lstinline@x@ is assigned \lstinline@1@ and \lstinline@w@ is assigned the tuple value using multiple assignment (see Section 14).
     1233therefore, the right-hand tuple is now the tuple ©[ [ 1, 2, 3, 4 ], 5 ]©.
     1234This tuple is then flattened, yielding ©[ 1, 2, 3, 4, 5 ]©, which is structured into ©[ 1, [ 2, 3, 4, 5 ] ]© to match the tuple type of the left-hand side.
     1235The tuple ©[ 2, 3, 4, 5 ]© is then closed to create a tuple value.
     1236Finally, ©x© is assigned ©1© and ©w© is assigned the tuple value using multiple assignment (see Section 14).
    9881237\begin{rationale}
    9891238A possible additional language extension is to use the structuring coercion for tuples to initialize a complex record with a tuple.
     
    9961245Mass assignment has the following form:
    9971246\begin{lstlisting}
    998 [ @\emph{lvalue}@, ..., @\emph{lvalue}@ ] = @\emph{expr}@;
    999 \end{lstlisting}
    1000 The left-hand side is a tuple of \lstinline@$\emph{lvalues}$@, which is a list of expressions each yielding an address, i.e., any data object that can appear on the left-hand side of a conventional assignment statement.
    1001 \lstinline@$\emph{expr}$@ is any standard arithmetic expression.
     1247[ §\emph{lvalue}§, ..., §\emph{lvalue}§ ] = §\emph{expr}§;
     1248\end{lstlisting}
     1249The left-hand side is a tuple of \emph{lvalues}, which is a list of expressions each yielding an address, i.e., any data object that can appear on the left-hand side of a conventional assignment statement.
     1250©$\emph{expr}$© is any standard arithmetic expression.
    10021251Clearly, the types of the entities being assigned must be type compatible with the value of the expression.
    10031252
     
    10251274*a1 = t; *a2 = t; *a3 = t;
    10261275\end{lstlisting}
    1027 The temporary \lstinline@t@ is necessary to store the value of the expression to eliminate conversion issues.
     1276The temporary ©t© is necessary to store the value of the expression to eliminate conversion issues.
    10281277The temporaries for the addresses are needed so that locations on the left-hand side do not change as the values are assigned.
    1029 In this case, \lstinline@y[i]@ uses the previous value of \lstinline@i@ and not the new value set at the beginning of the mass assignment.
     1278In this case, ©y[i]© uses the previous value of ©i© and not the new value set at the beginning of the mass assignment.
    10301279
    10311280
     
    10351284Multiple assignment has the following form:
    10361285\begin{lstlisting}
    1037 [ @\emph{lvalue}@, . . ., @\emph{lvalue}@ ] = [ @\emph{expr}@, . . ., @\emph{expr}@ ];
    1038 \end{lstlisting}
    1039 The left-hand side is a tuple of \lstinline@$\emph{lvalues}$@, and the right-hand side is a tuple of \lstinline@$\emph{expr}$@s.
    1040 Each \lstinline@$\emph{expr}$@ appearing on the righthand side of a multiple assignment statement is assigned to the corresponding \lstinline@$\emph{lvalues}$@ on the left-hand side of the statement using parallel semantics for each assignment.
     1286[ §\emph{lvalue}§, . . ., §\emph{lvalue}§ ] = [ §\emph{expr}§, . . ., §\emph{expr}§ ];
     1287\end{lstlisting}
     1288The left-hand side is a tuple of \emph{lvalues}, and the right-hand side is a tuple of \emph{expr}s.
     1289Each \emph{expr} appearing on the righthand side of a multiple assignment statement is assigned to the corresponding \emph{lvalues} on the left-hand side of the statement using parallel semantics for each assignment.
    10411290An example of multiple assignment is:
    10421291\begin{lstlisting}
    10431292[ x, y, z ] = [ 1, 2, 3 ];
    10441293\end{lstlisting}
    1045 Here, the values \lstinline@1@, \lstinline@2@ and \lstinline@3@ are assigned, respectively, to the variables \lstinline@x@, \lstinline@y@ and \lstinline@z@.
     1294Here, the values ©1©, ©2© and ©3© are assigned, respectively, to the variables ©x©, ©y© and ©z©.
    10461295 A more complex example is:
    10471296\begin{lstlisting}
    10481297[ i, y[ i ], z ] = [ 1, i, a + b ];
    10491298\end{lstlisting}
    1050 Here, the values \lstinline@1@, \lstinline@i@ and \lstinline@a + b@ are assigned to the variables \lstinline@i@, \lstinline@y[i]@ and \lstinline@z@, respectively.
     1299Here, the values ©1©, ©i© and ©a + b© are assigned to the variables ©i©, ©y[i]© and ©z©, respectively.
    10511300 Note, the parallel semantics of
    10521301multiple assignment ensures:
     
    10541303[ x, y ] = [ y, x ];
    10551304\end{lstlisting}
    1056 correctly interchanges (swaps) the values stored in \lstinline@x@ and \lstinline@y@.
     1305correctly interchanges (swaps) the values stored in ©x© and ©y©.
    10571306The following cases are errors:
    10581307\begin{lstlisting}
     
    10751324Cascade assignment has the following form:
    10761325\begin{lstlisting}
    1077 @\emph{tuple}@ = @\emph{tuple}@ = ... = @\emph{tuple}@;
     1326§\emph{tuple}§ = §\emph{tuple}§ = ... = §\emph{tuple}§;
    10781327\end{lstlisting}
    10791328and it has the same parallel semantics as for mass and multiple assignment.
     
    10931342Its general form is:
    10941343\begin{lstlisting}
    1095 @\emph{expr}@ . [ @\emph{fieldlist}@ ]
    1096 @\emph{expr}@ -> [ @\emph{fieldlist}@ ]
    1097 \end{lstlisting}
    1098 \lstinline@$\emph{expr}$@ is any expression yielding a value of type record, e.g., \lstinline@struct@, \lstinline@union@.
    1099 Each element of \lstinline@$\emph{ fieldlist}$@ is an element of the record specified by \lstinline@$\emph{expr}$@.
     1344§\emph{expr}§ . [ §\emph{fieldlist}§ ]
     1345§\emph{expr}§ -> [ §\emph{fieldlist}§ ]
     1346\end{lstlisting}
     1347\emph{expr} is any expression yielding a value of type record, e.g., ©struct©, ©union©.
     1348Each element of \emph{ fieldlist} is an element of the record specified by \emph{expr}.
    11001349A record-field tuple may be used anywhere a tuple can be used. An example of the use of a record-field tuple is
    11011350the following:
     
    11121361also, it is unnecessary to specify all the fields of a struct in a multiple record-field tuple.
    11131362
    1114 If a field of a \lstinline@struct@ is itself another \lstinline@struct@, multiple fields of this subrecord can be specified using a nested record-field tuple, as in the following example:
     1363If a field of a ©struct© is itself another ©struct©, multiple fields of this subrecord can be specified using a nested record-field tuple, as in the following example:
    11151364\begin{lstlisting}
    11161365struct inner {
     
    11291378\section{Labelled Break/Continue}
    11301379
    1131 While C provides \lstinline@break@ and \lstinline@continue@ statements for altering control flow, both are restricted to one level of nesting for a particular control structure.
    1132 Unfortunately, this restriction forces programmers to use \lstinline@goto@ to achieve the equivalent for more than one level of nesting.
    1133 To prevent having to make this switch, the \lstinline@break@ and \lstinline@continue@ are extended with a target label to support static multi-level exit~\cite{Buhr85,Java}.
    1134 For the labelled \lstinline@break@, it is possible to specify which control structure is the target for exit, as in:
    1135 \begin{quote2}
    1136 \begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
    1137 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
    1138 \begin{lstlisting}
    1139 `L1:` for ( ... ) {
    1140         `L2:` for ( ... ) {
    1141                 `L3:` for ( ... ) {
    1142                         ... break `L1`; ...
    1143                         ... break `L2`; ...
    1144                         ... break `L3`; // or break
     1380While C provides ©break© and ©continue© statements for altering control flow, both are restricted to one level of nesting for a particular control structure.
     1381Unfortunately, this restriction forces programmers to use ©goto© to achieve the equivalent for more than one level of nesting.
     1382To prevent having to make this switch, the ©break© and ©continue© are extended with a target label to support static multi-level exit~\cite{Buhr85,Java}.
     1383\VRef[Figure]{f:LabelledBreak} shows the labelled ©break©, and the target control structure of the exit.
     1384The inner most loop has three exit points, which cause termination of one or more of the three nested loops, respectively.
     1385\VRef[Figure]{f:LabelledContinue} shows the labelled ©continue©, and which control structure is the target of the next loop iteration.
     1386The inner most loop has three restart points, which cause the next loop iteration to begin, respectively.
     1387
     1388\begin{figure}
     1389\centering
     1390\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     1391\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     1392\begin{lstlisting}
     1393®L1:® for ( ... ) {
     1394        ®L2:® for ( ... ) {
     1395                ®L3:® for ( ... ) {
     1396                        ... break ®L1®; ...
     1397                        ... break ®L2®; ...
     1398                        ... break ®L3®; // or break
    11451399                }
    11461400        }
     
    11541408                        ... goto L1; ...
    11551409                        ... goto L2; ...
    1156                         ... goto L3; // or break
     1410                        ... goto L3; // or break 
    11571411                } L3: ;
    11581412        } L2: ;
     
    11601414\end{lstlisting}
    11611415\end{tabular}
    1162 \end{quote2}
    1163 The inner most loop has three exit points, which cause termination of one or more of the three nested loops, respectively.
    1164 For the labelled \lstinline@continue@, it is possible to specify which control structure is the target for the next loop iteration, as in:
    1165 \begin{quote2}
    1166 \begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
    1167 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
    1168 \begin{lstlisting}
    1169 `L1`: for ( ... ) {
    1170         `L2`: for ( ... ) {
    1171                 `L3`: for ( ... ) {
    1172                         ... continue `L1`; ...
    1173                         ... continue `L2`; ...
    1174                         ... continue `L3`; ...
     1416\caption{Labelled Break}
     1417\label{f:LabelledBreak}
     1418
     1419\vspace*{0.25in}
     1420
     1421\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     1422\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     1423\begin{lstlisting}
     1424®L1®: for ( ... ) {
     1425        ®L2®: for ( ... ) {
     1426                ®L3®: for ( ... ) {
     1427                        ... continue ®L1®; ...
     1428                        ... continue ®L2®; ...
     1429                        ... continue ®L3®; // or continue
    11751430
    11761431                }
     
    11871442                        ... goto L1; ...
    11881443                        ... goto L2; ...
    1189                         ... goto L3; ...
     1444                        ... goto L3; // or continue
    11901445                  L3: ;
    11911446                }
     
    11961451\end{lstlisting}
    11971452\end{tabular}
    1198 \end{quote2}
    1199 The inner most loop has three restart points, which cause the next loop iteration to begin, respectively.
    1200 For both \lstinline@break@ and \lstinline@continue@, the target label must be directly associated with a \lstinline@for@, \lstinline@while@ or \lstinline@do@ statement;
    1201 for \lstinline@break@, the target label can also be associated with a \lstinline@switch@ statement.
    1202 Both \lstinline@break@ and \lstinline@continue@ with target labels are simply a \lstinline@goto@ restricted in the following ways:
     1453\caption{Labelled Continue}
     1454\label{f:LabelledContinue}
     1455\end{figure}
     1456
     1457For both ©break© and ©continue©, the target label must be directly associated with a ©for©, ©while© or ©do© statement;
     1458for ©break©, the target label can also be associated with a ©switch© statement.
     1459Both ©break© and ©continue© with target labels are simply a ©goto© restricted in the following ways:
    12031460\begin{itemize}
    12041461\item
     
    12091466Since they always transfers out of containing control structures, they cannot be used to branch into a control structure.
    12101467\end{itemize}
    1211 The advantage of the labelled \lstinline@break@/\lstinline@continue@ is that it allows static multi-level exits without having to use the \lstinline@goto@ statement and ties control flow to the target control structure rather than an arbitrary point in a program.
     1468The advantage of the labelled ©break©/©continue© is that it allows static multi-level exits without having to use the ©goto© statement and ties control flow to the target control structure rather than an arbitrary point in a program.
    12121469Furthermore, the location of the label at the beginning of the target control structure informs the reader that complex control-flow is occurring in the body of the control structure.
    1213 With \lstinline@goto@, the label at the end of the control structure fails to convey this important clue early enough to the reader.
     1470With ©goto©, the label at the end of the control structure fails to convey this important clue early enough to the reader.
    12141471Finally, using an explicit target for the transfer instead of an implicit target allows new nested loop or switch constructs to be added or removed without affecting other constructs.
    1215 The implicit targets of the current \lstinline@break@ and \lstinline@continue@, i.e., the closest enclosing loop or \lstinline@switch@, change as certain constructs are added or removed.
     1472The implicit targets of the current ©break© and ©continue©, i.e., the closest enclosing loop or ©switch©, change as certain constructs are added or removed.
    12161473
    12171474
    12181475\section{Switch Statement}
    12191476
    1220 C allows a number of questionable forms for the \lstinline@switch@ statement:
     1477C allows a number of questionable forms for the ©switch© statement:
    12211478\begin{enumerate}
    12221479\item
    1223 By default, the end of a \lstinline@case@ clause\footnote{
    1224 In this section, the term \emph{case clause} refers to either a \lstinline@case@ or \lstinline@default@ clause.}
    1225 \emph{falls through} to the next \lstinline@case@ clause in the \lstinline@switch@ statement;
    1226 to exit a \lstinline@switch@ statement from a \lstinline@case@ clause requires explicitly terminating the clause with a transfer statement, most commonly \lstinline@break@, as in:
     1480By default, the end of a ©case© clause\footnote{
     1481In this section, the term \emph{case clause} refers to either a ©case© or ©default© clause.}
     1482\emph{falls through} to the next ©case© clause in the ©switch© statement;
     1483to exit a ©switch© statement from a ©case© clause requires explicitly terminating the clause with a transfer statement, most commonly ©break©, as in:
    12271484\begin{lstlisting}
    12281485switch ( i ) {
     
    12491506\end{lstlisting}
    12501507In this example, case 2 is always done if case 3 is done.
    1251 This control flow is difficult to simulate with if statements or a \lstinline@switch@ statement without fall-through as code must be duplicated or placed in a separate routine.
     1508This control flow is difficult to simulate with if statements or a ©switch© statement without fall-through as code must be duplicated or placed in a separate routine.
    12521509C also uses fall-through to handle multiple case-values resulting in the same action, as in:
    12531510\begin{lstlisting}
     
    12621519\end{lstlisting}
    12631520However, this situation is handled in other languages without fall-through by allowing a list of case values.
    1264 While fall-through itself is not a problem, the problem occurs when fall-through is the \lstinline@default@, as this semantics is not intuitive to most programmers and is different from virtually all other programming languages with a \lstinline@switch@ statement.
    1265 Hence, \lstinline@default@ fall-through semantics results in a large number of programming errors as programmers often forget the \lstinline@break@ statement at the end of a \lstinline@case@ clause, resulting in inadvertent fall-through.
    1266 
    1267 \item
    1268 It is possible to place \lstinline@case@ clauses on statements nested \emph{within} the body of the \lstinline@switch@ statement, as in:
     1521While fall-through itself is not a problem, the problem occurs when fall-through is the ©default©, as this semantics is not intuitive to most programmers and is different from virtually all other programming languages with a ©switch© statement.
     1522Hence, ©default© fall-through semantics results in a large number of programming errors as programmers often forget the ©break© statement at the end of a ©case© clause, resulting in inadvertent fall-through.
     1523
     1524\item
     1525It is possible to place ©case© clauses on statements nested \emph{within} the body of the ©switch© statement, as in:
    12691526\begin{lstlisting}
    12701527switch ( i ) {
     
    13071564}
    13081565\end{lstlisting}
    1309 which unrolls a loop N times (N = 8 above) and uses the \lstinline@switch@ statement to deal with any iterations not a multiple of N.
     1566which unrolls a loop N times (N = 8 above) and uses the ©switch© statement to deal with any iterations not a multiple of N.
    13101567While efficient, this sort of special purpose usage is questionable:
    13111568\begin{quote}
     
    13141571\end{quote}
    13151572\item
    1316 It is possible to place the \lstinline@default@ clause anywhere in the list of labelled clauses for a \lstinline@switch@ statement, rather than only at the end.
    1317 Virtually all programming languages with a \lstinline@switch@ statement require the \lstinline@default@ clause to appear last in the case-clause list.
    1318 The logic for this semantics is that after checking all the \lstinline@case@ clauses without success, the \lstinline@default@ clause is selected;
    1319 hence, physically placing the \lstinline@default@ clause at the end of the \lstinline@case@ clause list matches with this semantics.
    1320 This physical placement can be compared to the physical placement of an \lstinline@else@ clause at the end of a series of connected \lstinline@if@/\lstinline@else@ statements.
    1321 
    1322 \item
    1323 It is possible to place unreachable code at the start of a \lstinline@switch@ statement, as in:
     1573It is possible to place the ©default© clause anywhere in the list of labelled clauses for a ©switch© statement, rather than only at the end.
     1574Virtually all programming languages with a ©switch© statement require the ©default© clause to appear last in the case-clause list.
     1575The logic for this semantics is that after checking all the ©case© clauses without success, the ©default© clause is selected;
     1576hence, physically placing the ©default© clause at the end of the ©case© clause list matches with this semantics.
     1577This physical placement can be compared to the physical placement of an ©else© clause at the end of a series of connected ©if©/©else© statements.
     1578
     1579\item
     1580It is possible to place unreachable code at the start of a ©switch© statement, as in:
    13241581\begin{lstlisting}
    13251582switch ( x ) {
     
    13311588}
    13321589\end{lstlisting}
    1333 While the declaration of the local variable \lstinline@y@ is useful and its scope is across all \lstinline@case@ clauses, the initialization for such a variable is defined to never be executed because control always transfers over it.
    1334 Furthermore, any statements before the first \lstinline@case@ clause can only be executed if labelled and transfered to using a \lstinline@goto@, either from outside or inside of the \lstinline@switch@.
     1590While the declaration of the local variable ©y© is useful and its scope is across all ©case© clauses, the initialization for such a variable is defined to never be executed because control always transfers over it.
     1591Furthermore, any statements before the first ©case© clause can only be executed if labelled and transfered to using a ©goto©, either from outside or inside of the ©switch©.
    13351592As mentioned, transfer into control structures should be forbidden.
    1336 Transfers from within the \lstinline@switch@ body using a \lstinline@goto@ are equally unpalatable.
     1593Transfers from within the ©switch© body using a ©goto© are equally unpalatable.
    13371594\end{enumerate}
    13381595Before discussing potential language changes to deal with these problems, it is worth observing that in a typical C program:
    13391596\begin{itemize}
    13401597\item
    1341 the number of \lstinline@switch@ statements is small,
    1342 \item
    1343 most \lstinline@switch@ statements are well formed (i.e., no Duff's device),
    1344 \item
    1345 the \lstinline@default@ clause is usually written as the last case-clause,
    1346 \item
    1347 and there is only a medium amount of fall-through from one \lstinline@case@ clause to the next, and most of these result from a list of case values executing common code, rather than a sequence of case actions that compound.
     1598the number of ©switch© statements is small,
     1599\item
     1600most ©switch© statements are well formed (i.e., no Duff's device),
     1601\item
     1602the ©default© clause is usually written as the last case-clause,
     1603\item
     1604and there is only a medium amount of fall-through from one ©case© clause to the next, and most of these result from a list of case values executing common code, rather than a sequence of case actions that compound.
    13481605\end{itemize}
    13491606These observations should help to put the effects of suggested changes into perspective.
     
    13511608\begin{enumerate}
    13521609\item
    1353 Eliminating the \lstinline@default@ fall-through problem has the greatest potential for affecting existing code.
    1354 However, even if fall-through is removed, most \lstinline@switch@ statements would continue to work because of the explicit transfers already present at the end of each \lstinline@case@ clause, and the common placement of the \lstinline@default@ clause at the end of the case list.
    1355 In addition, the above grammar provides for the most common use of fall-through, i.e., a list of \lstinline@case@ clauses executing common code, e.g.:
     1610Eliminating the ©default© fall-through problem has the greatest potential for affecting existing code.
     1611However, even if fall-through is removed, most ©switch© statements would continue to work because of the explicit transfers already present at the end of each ©case© clause, and the common placement of the ©default© clause at the end of the case list.
     1612In addition, the above grammar provides for the most common use of fall-through, i.e., a list of ©case© clauses executing common code, e.g.:
    13561613\begin{lstlisting}
    13571614case 1:  case 2:  case 3: ...
    13581615\end{lstlisting}
    13591616Nevertheless, reversing the default action would have a non-trivial effect on case actions that compound, such as the above example of processing shell arguments.
    1360 Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of \lstinline@switch@ statement, called \lstinline@choose@, with no fall-through semantics.
    1361 The \lstinline@choose@ statement is identical to the new \lstinline@switch@ statement, except there is no implicit fall-through between case-clauses and the \lstinline@break@ statement applies to the enclosing loop construct (as for the continue statement in a \lstinline@switch@ statement).
     1617Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no fall-through semantics.
     1618The ©choose© statement is identical to the new ©switch© statement, except there is no implicit fall-through between case-clauses and the ©break© statement applies to the enclosing loop construct (as for the continue statement in a ©switch© statement).
    13621619It is still possible to fall-through if a case-clause ends with the new keyword fallthru, e.g.:
    13631620\begin{lstlisting}
     
    13751632\item
    13761633Eliminating Duff's device is straightforward and only invalidates a small amount of very questionable code.
    1377 The solution is to allow \lstinline@case@ clauses to only appear at the same nesting level as the \lstinline@switch@ body, as is done in most other programming languages with \lstinline@switch@ statements.
    1378 \item
    1379 The issue of \lstinline@default@ at locations other than at the end of the cause clause can be solved by using good programming style, and there are a few reasonable situations involving fall-through where the \lstinline@default@ clause may appear is locations other than at the end.
     1634The solution is to allow ©case© clauses to only appear at the same nesting level as the ©switch© body, as is done in most other programming languages with ©switch© statements.
     1635\item
     1636The issue of ©default© at locations other than at the end of the cause clause can be solved by using good programming style, and there are a few reasonable situations involving fall-through where the ©default© clause may appear is locations other than at the end.
    13801637Therefore, no language change is made for this issue.
    13811638\item
    1382 Dealing with unreachable code at the start of a \lstinline@switch@ statement is solved by defining the declaration-list, including any associated initialization, at the start of a \lstinline@switch@ statement body to be executed before the transfer to the appropriate \lstinline@case@ clause.
     1639Dealing with unreachable code at the start of a ©switch© statement is solved by defining the declaration-list, including any associated initialization, at the start of a ©switch© statement body to be executed before the transfer to the appropriate ©case© clause.
    13831640This semantics is the same as for declarations at the start of a loop body, which are executed before each iteration of the loop body.
    1384 As well, this grammar does not allow statements to appear before the first \lstinline@case@ clause.
     1641As well, this grammar does not allow statements to appear before the first ©case© clause.
    13851642The change is compatible for declarations with initialization in this context because existing code cannot assume the initialization has occurred.
    13861643The change is incompatible for statements, but any existing code using it is highly questionable, as in:
     
    13921649}
    13931650\end{lstlisting}
    1394 The statement after the \lstinline@switch@ can never be executed unless it is labelled.
    1395 If it is labelled, it must be transfered to from outside or inside the \lstinline@switch@ statement, neither of which is acceptable control flow.
     1651The statement after the ©switch© can never be executed unless it is labelled.
     1652If it is labelled, it must be transfered to from outside or inside the ©switch© statement, neither of which is acceptable control flow.
    13961653\end{enumerate}
    13971654
     
    13991656\section{Case Clause}
    14001657
    1401 C restricts the \lstinline@case@ clause of a \lstinline@switch@ statement to a single value.
    1402 For multiple \lstinline@case@ clauses associated with the same statement, it is necessary to have multiple \lstinline@case@ clauses rather than multiple values.
    1403 Requiring a \lstinline@case@ clause for each value does not seem to be in the spirit of brevity normally associated with C.
    1404 Therefore, the \lstinline@case@ clause is extended with a list of values, as in:
     1658C restricts the ©case© clause of a ©switch© statement to a single value.
     1659For multiple ©case© clauses associated with the same statement, it is necessary to have multiple ©case© clauses rather than multiple values.
     1660Requiring a ©case© clause for each value does not seem to be in the spirit of brevity normally associated with C.
     1661Therefore, the ©case© clause is extended with a list of values, as in:
    14051662\begin{quote2}
    1406 \begin{tabular}{@{}l@{\hspace{30pt}}l@{\hspace{20pt}}l@{}}
    1407 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c@{\hspace{20pt}}}{\textbf{C}}        \\
     1663\begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
     1664\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\
    14081665\begin{lstlisting}
    14091666switch ( i ) {
    1410   `case 1, 3, 5`:
     1667  ®case 1, 3, 5®:
    14111668        ...
    1412   `case 2, 4, 6`:
     1669  ®case 2, 4, 6®:
    14131670        ...
    14141671}
     
    14361693In addition, two forms of subranges are allowed to specify case values: the GNU C form and a new \CFA form.
    14371694\begin{quote2}
    1438 \begin{tabular}{@{}l@{\hspace{30pt}}l@{\hspace{20pt}}l@{}}
    1439 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c@{\hspace{20pt}}}{\textbf{GNU C}}    \\
     1695\begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
     1696\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{GNU C}}     \\
    14401697\begin{lstlisting}
    14411698switch ( i ) {
    1442   `case 1~5:`
     1699  ®case 1~5:®
    14431700        ...
    1444   `case 10~15:`
     1701  ®case 10~15:®
    14451702        ...
    14461703}
     
    16971954
    16981955The syntax for using references in \CFA is the same as \CC with the exception of reference initialization.
    1699 Use \lstinline@&@ to specify a reference, and access references just like regular objects, not like pointers (use dot notation to access fields).
     1956Use ©&© to specify a reference, and access references just like regular objects, not like pointers (use dot notation to access fields).
    17001957When initializing a reference, \CFA uses a different syntax which differentiates reference initialization from assignment to a reference.
    1701 The \lstinline@&@ is used on both sides of the expression to clarify that the address of the reference is being set to the address of the variable to which it refers.
     1958The ©&© is used on both sides of the expression to clarify that the address of the reference is being set to the address of the variable to which it refers.
    17021959
    17031960\begin{figure}
     
    17722029In \CFA, as in C, all scalar types can be incremented and
    17732030decremented, which is defined in terms of adding or subtracting 1.
    1774 The operations \lstinline@&&@, \lstinline@||@, and \lstinline@!@ can be applied to any scalar arguments and are defined in terms of comparison against 0 (ex. \lstinline@(a && b)@ becomes \lstinline@(a != 0 && b != 0)@).
     2031The operations ©&&©, ©||©, and ©!© can be applied to any scalar arguments and are defined in terms of comparison against 0 (ex. ©(a && b)© becomes ©(a != 0 && b != 0)©).
    17752032
    17762033In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to any
     
    17812038polymorphic parameters, and user-defined pointer-like types may need a null value.
    17822039Defining special
    1783 constants for a user-defined type is more efficient than defining a conversion to the type from \lstinline@_Bool@.
     2040constants for a user-defined type is more efficient than defining a conversion to the type from ©_Bool©.
    17842041
    17852042Why just 0 and 1? Why not other integers? No other integers have special status in C.
     
    18642121\begin{tabular}[t]{ll}
    18652122%identifier & operation \\ \hline
    1866 \lstinline@?[?]@ & subscripting \impl{?[?]}\\
    1867 \lstinline@?()@ & function call \impl{?()}\\
    1868 \lstinline@?++@ & postfix increment \impl{?++}\\
    1869 \lstinline@?--@ & postfix decrement \impl{?--}\\
    1870 \lstinline@++?@ & prefix increment \impl{++?}\\
    1871 \lstinline@--?@ & prefix decrement \impl{--?}\\
    1872 \lstinline@*?@ & dereference \impl{*?}\\
    1873 \lstinline@+?@ & unary plus \impl{+?}\\
    1874 \lstinline@-?@ & arithmetic negation \impl{-?}\\
    1875 \lstinline@~?@ & bitwise negation \impl{~?}\\
    1876 \lstinline@!?@ & logical complement \impl{"!?}\\
    1877 \lstinline@?*?@ & multiplication \impl{?*?}\\
    1878 \lstinline@?/?@ & division \impl{?/?}\\
     2123©?[?]© & subscripting \impl{?[?]}\\
     2124©?()© & function call \impl{?()}\\
     2125©?++© & postfix increment \impl{?++}\\
     2126©?--© & postfix decrement \impl{?--}\\
     2127©++?© & prefix increment \impl{++?}\\
     2128©--?© & prefix decrement \impl{--?}\\
     2129©*?© & dereference \impl{*?}\\
     2130©+?© & unary plus \impl{+?}\\
     2131©-?© & arithmetic negation \impl{-?}\\
     2132©~?© & bitwise negation \impl{~?}\\
     2133©!?© & logical complement \impl{"!?}\\
     2134©?*?© & multiplication \impl{?*?}\\
     2135©?/?© & division \impl{?/?}\\
    18792136\end{tabular}\hfil
    18802137\begin{tabular}[t]{ll}
    18812138%identifier & operation \\ \hline
    1882 \lstinline@?%?@ & remainder \impl{?%?}\\
    1883 \lstinline@?+?@ & addition \impl{?+?}\\
    1884 \lstinline@?-?@ & subtraction \impl{?-?}\\
    1885 \lstinline@?<<?@ & left shift \impl{?<<?}\\
    1886 \lstinline@?>>?@ & right shift \impl{?>>?}\\
    1887 \lstinline@?<?@ & less than \impl{?<?}\\
    1888 \lstinline@?<=?@ & less than or equal \impl{?<=?}\\
    1889 \lstinline@?>=?@ & greater than or equal \impl{?>=?}\\
    1890 \lstinline@?>?@ & greater than \impl{?>?}\\
    1891 \lstinline@?==?@ & equality \impl{?==?}\\
    1892 \lstinline@?!=?@ & inequality \impl{?"!=?}\\
    1893 \lstinline@?&?@ & bitwise AND \impl{?&?}\\
     2139©?%?© & remainder \impl{?%?}\\
     2140©?+?© & addition \impl{?+?}\\
     2141©?-?© & subtraction \impl{?-?}\\
     2142©?<<?© & left shift \impl{?<<?}\\
     2143©?>>?© & right shift \impl{?>>?}\\
     2144©?<?© & less than \impl{?<?}\\
     2145©?<=?© & less than or equal \impl{?<=?}\\
     2146©?>=?© & greater than or equal \impl{?>=?}\\
     2147©?>?© & greater than \impl{?>?}\\
     2148©?==?© & equality \impl{?==?}\\
     2149©?!=?© & inequality \impl{?"!=?}\\
     2150©?&?© & bitwise AND \impl{?&?}\\
    18942151\end{tabular}\hfil
    18952152\begin{tabular}[t]{ll}
    18962153%identifier & operation \\ \hline
    1897 \lstinline@?^?@ & exclusive OR \impl{?^?}\\
    1898 \lstinline@?|?@ & inclusive OR \impl{?"|?}\\
    1899 \lstinline@?=?@ & simple assignment \impl{?=?}\\
    1900 \lstinline@?*=?@ & multiplication assignment \impl{?*=?}\\
    1901 \lstinline@?/=?@ & division assignment \impl{?/=?}\\
    1902 \lstinline@?%=?@ & remainder assignment \impl{?%=?}\\
    1903 \lstinline@?+=?@ & addition assignment \impl{?+=?}\\
    1904 \lstinline@?-=?@ & subtraction assignment \impl{?-=?}\\
    1905 \lstinline@?<<=?@ & left-shift assignment \impl{?<<=?}\\
    1906 \lstinline@?>>=?@ & right-shift assignment \impl{?>>=?}\\
    1907 \lstinline@?&=?@ & bitwise AND assignment \impl{?&=?}\\
    1908 \lstinline@?^=?@ & exclusive OR assignment \impl{?^=?}\\
    1909 \lstinline@?|=?@ & inclusive OR assignment \impl{?"|=?}\\
     2154©?^?© & exclusive OR \impl{?^?}\\
     2155©?|?© & inclusive OR \impl{?"|?}\\
     2156©?=?© & simple assignment \impl{?=?}\\
     2157©?*=?© & multiplication assignment \impl{?*=?}\\
     2158©?/=?© & division assignment \impl{?/=?}\\
     2159©?%=?© & remainder assignment \impl{?%=?}\\
     2160©?+=?© & addition assignment \impl{?+=?}\\
     2161©?-=?© & subtraction assignment \impl{?-=?}\\
     2162©?<<=?© & left-shift assignment \impl{?<<=?}\\
     2163©?>>=?© & right-shift assignment \impl{?>>=?}\\
     2164©?&=?© & bitwise AND assignment \impl{?&=?}\\
     2165©?^=?© & exclusive OR assignment \impl{?^=?}\\
     2166©?|=?© & inclusive OR assignment \impl{?"|=?}\\
    19102167\end{tabular}
    19112168\hfil
     
    19162173These identifiers are defined such that the question marks in the name identify the location of the operands.
    19172174These operands represent the parameters to the functions, and define how the operands are mapped to the function call.
    1918 For example, \lstinline@a + b@ becomes \lstinline@?+?(a, b)@.
     2175For example, ©a + b© becomes ©?+?(a, b)©.
    19192176
    19202177In the example below, a new type, myComplex, is defined with an overloaded constructor, + operator, and string operator.
     
    19582215Auto type-inferencing occurs in a declaration where a variable's type is inferred from its initialization expression type.
    19592216\begin{quote2}
    1960 \begin{tabular}{@{}l@{\hspace{30pt}}ll@{}}
    1961 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CC}}        & \multicolumn{1}{c}{\lstinline@gcc@}\index{gcc} \\
     2217\begin{tabular}{@{}l@{\hspace{3em}}ll@{}}
     2218\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CC}} & \multicolumn{1}{c}{©gcc©}\index{gcc} \\
    19622219\begin{lstlisting}
    19632220
     
    19902247\end{itemize}
    19912248
    1992 In \CFA, \lstinline@typedef@ provides a mechanism to alias long type names with short ones, both globally and locally, but not eliminate the use of the short name.
    1993 \lstinline@gcc@ provides \lstinline@typeof@ to declare a secondary variable from a primary variable.
     2249In \CFA, ©typedef© provides a mechanism to alias long type names with short ones, both globally and locally, but not eliminate the use of the short name.
     2250©gcc© provides ©typeof© to declare a secondary variable from a primary variable.
    19942251\CFA also relies heavily on the specification of the left-hand side of assignment for type inferencing, so in many cases it is crucial to specify the type of the left-hand side to select the correct type of the right-hand expression.
    19952252Only for overloaded routines with the same return type is variable type-inferencing possible.
    1996 Finally, \lstinline@auto@ presents the programming problem of tracking down a type when the type is actually needed.
     2253Finally, ©auto© presents the programming problem of tracking down a type when the type is actually needed.
    19972254For example, given
    19982255\begin{lstlisting}
    1999 auto j = `...`
    2000 \end{lstlisting}
    2001 and the need to write a routine to compute using \lstinline@j@
    2002 \begin{lstlisting}
    2003 void rtn( `...` parm );
     2256auto j = ®...®
     2257\end{lstlisting}
     2258and the need to write a routine to compute using ©j©
     2259\begin{lstlisting}
     2260void rtn( ®...® parm );
    20042261rtn( j );
    20052262\end{lstlisting}
    2006 A programmer must work backwards to determine the type of \lstinline@j@'s initialization expression, reconstructing the possibly long generic type-name.
     2263A programmer must work backwards to determine the type of ©j©'s initialization expression, reconstructing the possibly long generic type-name.
    20072264In this situation, having the type name or a short alias is very useful.
    20082265
     
    20122269At some point, a programmer wants the type of the variable to remain constant and the expression to be in error when it changes.
    20132270
    2014 Given \lstinline@typedef@ and \lstinline@typeof@ in \CFA, and the strong need to use the type of left-hand side in inferencing, auto type-inferencing is not supported at this time.
     2271Given ©typedef© and ©typeof© in \CFA, and the strong need to use the type of left-hand side in inferencing, auto type-inferencing is not supported at this time.
    20152272Should a significant need arise, this feature can be revisited.
    20162273
     
    22162473
    22172474        try {
    2218         throw 13;
     2475                throw 13;
    22192476        }
    22202477        catch(int e) {
    2221         printf(.caught an exception: %d\n., e);
     2478                printf(.caught an exception: %d\n., e);
    22222479        }
    22232480\end{lstlisting}
     
    23142571} s;
    23152572\end{lstlisting}
    2316 The problem occurs in accesing these fields using the selection operation ``\lstinline@.@'':
     2573The problem occurs in accesing these fields using the selection operation ``©.©'':
    23172574\begin{lstlisting}
    23182575s.0 = 0;        // ambiguity with floating constant .0
     
    23212578To make this work, a space is required after the field selection:
    23222579\begin{lstlisting}
    2323 `s.@\textvisiblespace@0` = 0;
    2324 `s.@\textvisiblespace@1` = 1;
     2580®s.§\textvisiblespace§0® = 0;
     2581®s.§\textvisiblespace§1® = 1;
    23252582\end{lstlisting}
    23262583While this sytact is awkward, it is unlikely many programers will name fields of a structure 0 or 1.
    2327 Like the \CC lexical problem with closing template-syntax, e.g, \lstinline@Foo<Bar<int`>>`@, this issue can be solved with a more powerful lexer/parser.
    2328 
    2329 There are several ambiguous cases with operator identifiers, e.g., \lstinline@int *?*?()@, where the string \lstinline@*?*?@ can be lexed as \lstinline@*@/\lstinline@?*?@ or \lstinline@*?@/\lstinline@*?@.
    2330 Since it is common practise to put a unary operator juxtaposed to an identifier, e.g., \lstinline@*i@, users will be annoyed if they cannot do this with respect to operator identifiers.
     2584Like the \CC lexical problem with closing template-syntax, e.g, ©Foo<Bar<int®>>®©, this issue can be solved with a more powerful lexer/parser.
     2585
     2586There are several ambiguous cases with operator identifiers, e.g., ©int *?*?()©, where the string ©*?*?© can be lexed as ©*©/©?*?© or ©*?©/©*?©.
     2587Since it is common practise to put a unary operator juxtaposed to an identifier, e.g., ©*i©, users will be annoyed if they cannot do this with respect to operator identifiers.
    23312588Even with this special hack, there are 5 general cases that cannot be handled.
    2332 The first case is for the function-call identifier \lstinline@?()@:
    2333 \begin{lstlisting}
    2334 int *@\textvisiblespace@?()();  // declaration: space required after '*'
    2335 *@\textvisiblespace@?()();              // expression: space required after '*'
    2336 \end{lstlisting}
    2337 Without the space, the string \lstinline@*?()@ is ambiguous without N character look ahead;
    2338 it requires scanning ahead to determine if there is a \lstinline@'('@, which is the start of an argument/parameter list.
     2589The first case is for the function-call identifier ©?()©:
     2590\begin{lstlisting}
     2591int *§\textvisiblespace§?()();  // declaration: space required after '*'
     2592*§\textvisiblespace§?()();              // expression: space required after '*'
     2593\end{lstlisting}
     2594Without the space, the string ©*?()© is ambiguous without N character look ahead;
     2595it requires scanning ahead to determine if there is a ©'('©, which is the start of an argument/parameter list.
    23392596
    23402597The 4 remaining cases occur in expressions:
    23412598\begin{lstlisting}
    2342 i++@\textvisiblespace@?i:0;             // space required before '?'
    2343 i--@\textvisiblespace@?i:0;             // space required before '?'
    2344 i@\textvisiblespace@?++i:0;             // space required after '?'
    2345 i@\textvisiblespace@?--i:0;             // space required after '?'
    2346 \end{lstlisting}
    2347 In the first two cases, the string \lstinline@i++?@ is ambiguous, where this string can be lexed as \lstinline@i@ / \lstinline@++?@ or \lstinline@i++@ / \lstinline@?@;
    2348 it requires scanning ahead to determine if there is a \lstinline@'('@, which is the start of an argument list.
    2349 In the second two cases, the string \lstinline@?++x@ is ambiguous, where this string can be lexed as \lstinline@?++@ / \lstinline@x@ or \lstinline@?@ / y\lstinline@++x@;
    2350 it requires scanning ahead to determine if there is a \lstinline@'('@, which is the start of an argument list.
     2599i++§\textvisiblespace§?i:0;             // space required before '?'
     2600i--§\textvisiblespace§?i:0;             // space required before '?'
     2601i§\textvisiblespace§?++i:0;             // space required after '?'
     2602i§\textvisiblespace§?--i:0;             // space required after '?'
     2603\end{lstlisting}
     2604In the first two cases, the string ©i++?© is ambiguous, where this string can be lexed as ©i© / ©++?© or ©i++© / ©?©;
     2605it requires scanning ahead to determine if there is a ©'('©, which is the start of an argument list.
     2606In the second two cases, the string ©?++x© is ambiguous, where this string can be lexed as ©?++© / ©x© or ©?© / y©++x©;
     2607it requires scanning ahead to determine if there is a ©'('©, which is the start of an argument list.
    23512608
    23522609
     
    32743531
    32753532
    3276 \subsection{Comparing Key Features of \CFA}
     3533\subsection[Comparing Key Features of CFA]{Comparing Key Features of \CFA}
    32773534
    32783535
     
    32873544\begin{lstlisting}
    32883545struct Line {
    3289         float length;
     3546        float lnth;
    32903547}
    32913548// default constructor
    32923549void ?{}( Line * l ) {
     3550        l->lnth = 0.0;
    32933551        sout | "default" | endl;
    3294         l.length = 0.0;
    32953552}
    32963553
    32973554
    32983555// constructor with length
    3299 void ?{}( Line * l, float length ) {
    3300         sout | "length" | length | endl;
    3301 
    3302         l.length = length;
     3556void ?{}( Line * l, float lnth ) {
     3557        l->lnth = lnth;
     3558        sout | "lnth" | l->lnth | endl;
     3559
    33033560}
    33043561
    33053562// destructor
    3306 void ^?(Line &l) {
     3563void ^?() {
    33073564        sout | "destroyed" | endl;
    3308         l.length = 0.0;
     3565        l.lnth = 0.0;
    33093566}
    33103567
    33113568// usage
    33123569Line line1;
    3313 Line line2{ 3.4 };
     3570Line line2 = { 3.4 };
    33143571\end{lstlisting}
    33153572&
    33163573\begin{lstlisting}[language=C++]
    33173574class Line {
    3318         float length;
     3575        float lnth;
    33193576
    33203577        // default constructor
    33213578        Line() {
    33223579                cout << "default" << endl;
    3323                 length = 0.0;
     3580                lnth = 0.0;
    33243581        }
    33253582
    33263583
    3327         // constructor with length
     3584        // constructor with lnth
    33283585        Line( float l ) {
    33293586                cout << "length " << length
     
    36483905
    36493906\begin{comment}
    3650 \subsubsection{Modules/Packages}
     3907\subsubsection{Modules / Packages}
    36513908
    36523909\begin{lstlisting}
     
    38904147
    38914148
    3892 \subsubsection{\CC}
     4149\subsubsection[C++]{\CC}
    38934150
    38944151\CC is a general-purpose programming language.
     
    39644221\begin{enumerate}
    39654222\item
    3966 Change type of character literal \lstinline@int@ to \lstinline@char@.
     4223Change type of character literal ©int© to ©char©.
    39674224This change allows overloading differentiation argument type matching, e.g.:
    39684225\begin{lstlisting}
     
    39814238
    39824239\item
    3983 Change: String literals made \lstinline@const@ \\
    3984 The type of a string literal is changed from \lstinline@array of char@ to \lstinline@array of const char@.
    3985 The type of a wide string literal is changed from \lstinline@array of wchar_t@ to \lstinline@array of const wchar_t@. \\
     4240Change: String literals made ©const© \\
     4241The type of a string literal is changed from ©array of char© to ©array of const char©.
     4242The type of a wide string literal is changed from ©array of wchar_t© to ©array of const wchar_t©. \\
    39864243Rationale: This avoids calling an inappropriate overloaded function, which might expect to be able to modify its argument.
    39874244Effect on original feature: Change to semantics of well-defined feature. \\
    3988 Difficulty of converting: Simple syntactic transformation, because string literals can be converted to \lstinline@char*;@ (4.2).
     4245Difficulty of converting: Simple syntactic transformation, because string literals can be converted to ©char*;© (4.2).
    39894246The most common cases are handled by a new but deprecated standard conversion:
    39904247\begin{lstlisting}
     
    40254282
    40264283\CFA is C \emph{incompatible} on this issue, and provides semantics similar to \CC.
    4027 Nested types are not hoisted and can be referenced using the field selection operator ``\lstinline@.@'', unlike the \CC scope-resolution operator ``\lstinline@::@''.
     4284Nested types are not hoisted and can be referenced using the field selection operator ``©.©'', unlike the \CC scope-resolution operator ``©::©''.
    40284285Given that nested types in C are equivalent to not using them, i.e., they are essentially useless, it is unlikely there are any realistic usages that break because of this incompatibility.
    4029 
    40304286
    40314287\item
     
    40394295struct Y yy; // valid C, invalid C++
    40404296\end{lstlisting}
    4041 Rationale: C++ classes have member functions which require that classes establish scopes. The C rule
    4042 would leave classes as an incomplete scope mechanism which would prevent C++ programmers from maintaining
    4043 locality within a class. A coherent set of scope rules for C++ based on the C rule would be very
    4044 complicated and C++ programmers would be unable to predict reliably the meanings of nontrivial examples
    4045 involving nested or local functions.
    4046 Effect on original feature: Change of semantics of welldefined
    4047 feature.
    4048 Difficulty of converting: Semantic transformation. To make the struct type name visible in the scope of
    4049 the enclosing struct, the struct tag could be declared in the scope of the enclosing struct, before the enclosing
    4050 struct is defined. Example:
     4297Rationale: C++ classes have member functions which require that classes establish scopes.
     4298The C rule would leave classes as an incomplete scope mechanism which would prevent C++ programmers from maintaining locality within a class. A coherent set of scope rules for C++ based on the C rule would be very complicated and C++ programmers would be unable to predict reliably the meanings of nontrivial examples involving nested or local functions.
     4299Effect on original feature: Change of semantics of welldefined feature.
     4300Difficulty of converting: Semantic transformation. To make the struct type name visible in the scope of the enclosing struct, the struct tag could be declared in the scope of the enclosing struct, before the enclosing struct is defined. Example:
    40514301\begin{lstlisting}
    40524302struct Y; // struct Y and struct X are at the same scope
     
    40554305};
    40564306\end{lstlisting}
    4057 All the definitions of C struct types enclosed in other struct definitions and accessed outside the scope of
    4058 the enclosing struct could be exported to the scope of the enclosing struct. Note: this is a consequence of
    4059 the difference in scope rules, which is documented in 3.3.
     4307All the definitions of C struct types enclosed in other struct definitions and accessed outside the scope of the enclosing struct could be exported to the scope of the enclosing struct.
     4308Note: this is a consequence of the difference in scope rules, which is documented in 3.3.
    40604309How widely used: Seldom.
    40614310\end{enumerate}
     
    40694318The general case is printing out a sequence of variables separated by whitespace.
    40704319\begin{quote2}
    4071 \begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
    4072 \multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{\CC}}      \\
     4320\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     4321\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{\CC}}      \\
    40734322\begin{lstlisting}
    40744323int x = 0, y = 1, z = 2;
    4075 `sout` `|` x `|` y `|` z `| endl`;
     4324®sout® ®|® x ®|® y ®|® z ®| endl®;
    40764325\end{lstlisting}
    40774326&
     
    40824331\end{tabular}
    40834332\end{quote2}
    4084 The \CFA form is half as many characters, and is similar to Python I/O with respect to implicit separators.
     4333The \CFA form is half as many characters, and is similar to \Index{Python} I/O with respect to implicit separators.
    40854334
    40864335The logical-or operator is used because it is the lowest-priority overloadable operator, other than assignment.
     
    41094358A seperator does not appear at the start or end of a line.
    41104359\begin{lstlisting}[belowskip=0pt]
    4111 sout 1 | 2 | 3 | endl;
     4360sout | 1 | 2 | 3 | endl;
    41124361\end{lstlisting}
    41134362\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    41284377which is a local mechanism to disable insertion of the separator character.
    41294378\item
    4130 A seperator does not appear before a C string starting with the \Index{extended ASCII}\index{ASCII} characters: \lstinline[mathescape=off]@([{$£¥¿«@
     4379A seperator does not appear before a C string starting with the (extended) \Index{ASCII}\index{ASCII!extended} characters: \lstinline[mathescape=off]@([{$£¥¡¿«@
    41314380%$
    41324381\begin{lstlisting}[mathescape=off]
    4133 sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¿" | 7 | "x «" | 8 | endl;
     4382sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¡" | 7 | "x ¿" | 8 | "x «" | 9 | endl;
    41344383\end{lstlisting}
    41354384%$
    41364385\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    4137 x (1 x [2 x {3 x $4 x £5 x ¥6 x ¿7 x «8
     4386x (1 x [2 x {3 x $4 x £5 x ¥6 x ¡7 x ¿8 x «9
    41384387\end{lstlisting}
    41394388%$
    41404389\item
    4141 A seperator does not appear after a C string ending with the extended ASCII characters: \lstinline@,.:;!?)]}%¢»@
     4390A seperator does not appear after a C string ending with the (extended) \Index{ASCII}\index{ASCII!extended} characters: ©,.:;!?)]}%¢»©
    41424391\begin{lstlisting}[belowskip=0pt]
    41434392sout | 1 | ", x" | 2 | ". x" | 3 | ": x" | 4 | "; x" | 5 | "! x" | 6 | "? x" | 7 | ") x" | 8 | "] x" | 9 | "} x"
    4144          | 10 | "% x" | 11 | L"¢ x" | 12 | L"» x" | endl;
     4393         | 10 | "% x" | 11 | "¢ x" | 12 | "» x" | endl;
    41454394\end{lstlisting}
    41464395\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    41484397\end{lstlisting}
    41494398\item
    4150 A seperator does not appear before or after a C string begining/ending with the characters: \lstinline@\f\n\r\t\v\`'"@
     4399A seperator does not appear before or after a C string begining/ending with the \Index{ASCII} quote or whitespace characters: \lstinline[showspaces=true]@`'" \t\v\f\r\n@
    41514400\begin{lstlisting}[belowskip=0pt]
    4152 sout | "x '" | 1 | "' x \`" | 2 | "\` x \"" | 3 | "\" x" | endl;
    4153 \end{lstlisting}
    4154 \begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    4155 x '1' x \`2\` x "3" x
    4156 \end{lstlisting}
    4157 \begin{lstlisting}[showtabs=true,aboveskip=0pt]
    4158 sout | "x\t" | 1 | "\tx" | endl;
    4159 x       1       x
     4401sout | "x`" | 1 | "`x'" | 2 | "'x\"" | 3 | "\"x" | "x " | 4 | " x" | "x\t" | 1 | "\tx" | endl;
     4402\end{lstlisting}
     4403\begin{lstlisting}[mathescape=off,showspaces=true,showtabs=true,aboveskip=0pt,belowskip=0pt]
     4404x`1`x'2'x"3"x x 4 x x   1       x
    41604405\end{lstlisting}
    41614406\end{enumerate}
     
    41894434\end{lstlisting}
    41904435\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    4191 1 2 3
     4436 1 2 3
    41924437\end{lstlisting}
    41934438\begin{lstlisting}[mathescape=off,aboveskip=0pt,aboveskip=0pt,belowskip=0pt]
     
    42004445\end{lstlisting}
    42014446%$
    4202 \VRef[Figure]{f:ExampleIO} shows an example of input and output I/O in \CFA.
    4203 
    4204 \begin{figure}
    4205 \begin{lstlisting}[mathescape=off]
     4447\begin{comment}
    42064448#include <fstream>
    42074449
    42084450int main() {
    4209         char c;                                                                                                         // basic types
    4210         short int si;
    4211         unsigned short int usi;
    4212         int i;
    4213         unsigned int ui;
    4214         long int li;
    4215         unsigned long int uli;
    4216         long long int lli;
    4217         unsigned long long int ulli;
    4218         float f;
    4219         double d;
    4220         long double ld;
    4221         float _Complex fc;
    4222         double _Complex dc;
    4223         long double _Complex ldc;
    4224         char s1[10], s2[10];
    4225 
    4226         ifstream in;                                                                                            // create / open file
    4227         open( &in, "input.data", "r" );
    4228 
    4229         &in | &c                                                                                                        // character
    4230                 | &si | &usi | &i | &ui | &li | &uli | &lli | &ulli             // integral
    4231                 | &f | &d | &ld                                                                                 // floating point
    4232                 | &fc | &dc | &ldc                                                                              // floating-point complex
    4233                 | cstr( s1 ) | cstr( s2, 10 );                                                  // C string, length unchecked and checked
    4234 
    4235         sout | c | ' ' | endl                                                                           // character
    4236                  | si | usi | i | ui | li | uli | lli | ulli | endl             // integral
    4237                  | f | d | ld | endl                                                                    // floating point
    4238                  | fc | dc | ldc | endl;                                                                // complex
    4239         sout | endl;
    4240         sout | f | "" | d | "" | ld | endl                                                      // floating point without separator
    4241                  | sepDisable | fc | dc | ldc | sepEnable | endl                // complex without separator
    4242                  | sepOn | s1 | sepOff | s2 | endl                                              // local separator removal
    4243                  | s1 | "" | s2 | endl;                                                                 // C string withou separator
    4244         sout | endl;
    4245         sepSet( sout, ", $" );                                                                          // change separator, maximum of 15 characters
    4246         sout | f | d | ld | endl                                                                        // floating point without separator
    4247                  | fc | dc | ldc | endl                                                                 // complex without separator
    4248                  | s1 | s2 | endl;
    4249 }
    4250 
    4251 $ cat input.data
    4252 A 1 2 3 4 5 6 7 8 1.1 1.2 1.3 1.1+2.3 1.1-2.3 1.1-2.3 abc xyz
    4253 $ a.out
    4254 A
    4255 1 2 3 4 5 6 7 8
    4256 1.1 1.2 1.3
    4257 1.1+2.3i 1.1-2.3i 1.1-2.3i
    4258 
    4259 1.11.21.3
    4260 1.1+2.3i1.1-2.3i1.1-2.3i
    4261  abcxyz
    4262 abcxyz
    4263 
    4264 1.1, $1.2, $1.3
    4265 1.1+2.3i, $1.1-2.3i, $1.1-2.3i
    4266 abc, $xyz
    4267 \end{lstlisting}
    4268 \caption{Example I/O}
    4269 \label{f:ExampleIO}
    4270 \end{figure}
     4451        int x = 3, y = 5, z = 7;
     4452        sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2) | endl;
     4453        sout | 1 | 2 | 3 | endl;
     4454        sout | '1' | '2' | '3' | endl;
     4455        sout | 1 | "" | 2 | "" | 3 | endl;
     4456        sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¡" | 7 | "x ¿" | 8 | "x «" | 9 | endl;
     4457        sout | 1 | ", x" | 2 | ". x" | 3 | ": x" | 4 | "; x" | 5 | "! x" | 6 | "? x" | 7 | ") x" | 8 | "] x" | 9 | "} x"
     4458                 | 10 | "% x" | 11 | "¢ x" | 12 | "» x" | endl;
     4459        sout | "x`" | 1 | "`x'" | 2 | "'x\"" | 3 | "\"x" | "x " | 4 | " x" | "x\t" | 1 | "\tx" | endl;
     4460        sout | sepOn | 1 | 2 | 3 | sepOn | endl;        // separator at start of line
     4461        sout | 1 | sepOff | 2 | 3 | endl;                       // turn off implicit separator temporarily
     4462        sout | sepDisable | 1 | 2 | 3 | endl;           // turn off implicit separation, affects all subsequent prints
     4463        sout | 1 | sepOn | 2 | 3 | endl;                        // turn on implicit separator temporarily
     4464        sout | sepEnable | 1 | 2 | 3 | endl;            // turn on implicit separation, affects all subsequent prints
     4465        sepSet( sout, ", $" );                                          // change separator from " " to ", $"
     4466        sout | 1 | 2 | 3 | endl;
     4467
     4468}
     4469
     4470// Local Variables: //
     4471// tab-width: 4 //
     4472// End: //
     4473\end{comment}
     4474%$
    42714475
    42724476
     
    42804484
    42814485\begin{lstlisting}
    4282 forall( otype T ) T * malloc( void );
     4486forall( otype T ) T * malloc( void );§\indexc{malloc}§
    42834487forall( otype T ) T * malloc( char fill );
    42844488forall( otype T ) T * malloc( T * ptr, size_t size );
    42854489forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill );
    4286 forall( otype T ) T * calloc( size_t size );
    4287 forall( otype T ) T * realloc( T * ptr, size_t size );
     4490forall( otype T ) T * calloc( size_t nmemb );§\indexc{calloc}§
     4491forall( otype T ) T * realloc( T * ptr, size_t size );§\indexc{ato}§
    42884492forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill );
    42894493
    4290 forall( otype T ) T * aligned_alloc( size_t alignment );
     4494forall( otype T ) T * aligned_alloc( size_t alignment );§\indexc{ato}§
    42914495forall( otype T ) T * memalign( size_t alignment );             // deprecated
    42924496forall( otype T ) int posix_memalign( T ** ptr, size_t alignment );
     
    42974501
    42984502
    4299 \subsection{ato/strto}
    4300 
    4301 \begin{lstlisting}
    4302 int ato( const char * ptr );
     4503\subsection{ato / strto}
     4504
     4505\begin{lstlisting}
     4506int ato( const char * ptr );§\indexc{ato}§
    43034507unsigned int ato( const char * ptr );
    43044508long int ato( const char * ptr );
     
    43284532
    43294533
    4330 \subsection{bsearch/qsort}
     4534\subsection{bsearch / qsort}
    43314535
    43324536\begin{lstlisting}
    43334537forall( otype T | { int ?<?( T, T ); } )
    4334 T * bsearch( const T key, const T * arr, size_t dimension );
     4538T * bsearch( const T key, const T * arr, size_t dimension );§\indexc{bsearch}§
    43354539
    43364540forall( otype T | { int ?<?( T, T ); } )
    4337 void qsort( const T * arr, size_t dimension );
     4541void qsort( const T * arr, size_t dimension );§\indexc{qsort}§
    43384542\end{lstlisting}
    43394543
     
    43424546
    43434547\begin{lstlisting}
    4344 char abs( char );
    4345 extern "C" {
    4346 int abs( int );                         // use default C routine for int
    4347 } // extern "C"
     4548char abs( char );§\indexc{abs}§
     4549int abs( int );
    43484550long int abs( long int );
    43494551long long int abs( long long int );
     
    43514553double abs( double );
    43524554long double abs( long double );
    4353 float _Complex abs( float _Complex );
    4354 double _Complex abs( double _Complex );
    4355 long double _Complex abs( long double _Complex );
    4356 \end{lstlisting}
    4357 
    4358 
    4359 \subsection{floor/ceil}
    4360 
    4361 \begin{lstlisting}
    4362 float floor( float );
    4363 extern "C" {
    4364 double floor( double );         // use C routine for double
    4365 } // extern "C"
    4366 long double floor( long double );
    4367 
    4368 float ceil( float );
    4369 extern "C" {
    4370 double ceil( double );          // use C routine for double
    4371 } // extern "C"
    4372 long double ceil( long double );
     4555float abs( float _Complex );
     4556double abs( double _Complex );
     4557long double abs( long double _Complex );
    43734558\end{lstlisting}
    43744559
     
    43774562
    43784563\begin{lstlisting}
    4379 void rand48seed( long int s );
    4380 char rand48();
     4564void rand48seed( long int s );§\indexc{rand48seed}§
     4565char rand48();§\indexc{rand48}§
    43814566int rand48();
    43824567unsigned int rand48();
     
    43914576
    43924577
    4393 \subsection{min/max/swap}
     4578\subsection{min / max / swap}
    43944579
    43954580\begin{lstlisting}
    43964581forall( otype T | { int ?<?( T, T ); } )
    4397 T min( const T t1, const T t2 );
     4582T min( const T t1, const T t2 );§\indexc{min}§
    43984583
    43994584forall( otype T | { int ?>?( T, T ); } )
    4400 T max( const T t1, const T t2 );
     4585T max( const T t1, const T t2 );§\indexc{max}§
    44014586
    44024587forall( otype T )
    4403 void swap( T * t1, T * t2 );
     4588void swap( T * t1, T * t2 );§\indexc{swap}§
     4589\end{lstlisting}
     4590
     4591
     4592\section{Math Library}
     4593\label{s:Math Library}
     4594
     4595The goal of the \CFA math-library is to wrap many of the existing C math library-routines that are explicitly polymorphic into implicitly polymorphic versions.
     4596
     4597
     4598\subsection{General}
     4599
     4600\begin{lstlisting}
     4601float fabs( float );§\indexc{fabs}§
     4602double fabs( double );
     4603long double fabs( long double );
     4604float cabs( float _Complex );
     4605double cabs( double _Complex );
     4606long double cabs( long double _Complex );
     4607
     4608float ?%?( float, float );§\indexc{fmod}§
     4609float fmod( float, float );
     4610double ?%?( double, double );
     4611double fmod( double, double );
     4612long double ?%?( long double, long double );
     4613long double fmod( long double, long double );
     4614
     4615float remainder( float, float );§\indexc{remainder}§
     4616double remainder( double, double );
     4617long double remainder( long double, long double );
     4618
     4619[ int, float ] remquo( float, float );§\indexc{remquo}§
     4620float remquo( float, float, int * );
     4621[ int, double ] remquo( double, double );
     4622double remquo( double, double, int * );
     4623[ int, long double ] remquo( long double, long double );
     4624long double remquo( long double, long double, int * );
     4625
     4626[ int, float ] div( float, float );                                             // alternative name for remquo
     4627float div( float, float, int * );§\indexc{div}§
     4628[ int, double ] div( double, double );
     4629double div( double, double, int * );
     4630[ int, long double ] div( long double, long double );
     4631long double div( long double, long double, int * );
     4632
     4633float fma( float, float, float );§\indexc{fma}§
     4634double fma( double, double, double );
     4635long double fma( long double, long double, long double );
     4636
     4637float fdim( float, float );§\indexc{fdim}§
     4638double fdim( double, double );
     4639long double fdim( long double, long double );
     4640
     4641float nan( const char * );§\indexc{nan}§
     4642double nan( const char * );
     4643long double nan( const char * );
     4644\end{lstlisting}
     4645
     4646
     4647\subsection{Exponential}
     4648
     4649\begin{lstlisting}
     4650float exp( float );§\indexc{exp}§
     4651double exp( double );
     4652long double exp( long double );
     4653float _Complex exp( float _Complex );
     4654double _Complex exp( double _Complex );
     4655long double _Complex exp( long double _Complex );
     4656
     4657float exp2( float );§\indexc{exp2}§
     4658double exp2( double );
     4659long double exp2( long double );
     4660float _Complex exp2( float _Complex );
     4661double _Complex exp2( double _Complex );
     4662long double _Complex exp2( long double _Complex );
     4663
     4664float expm1( float );§\indexc{expm1}§
     4665double expm1( double );
     4666long double expm1( long double );
     4667
     4668float log( float );§\indexc{log}§
     4669double log( double );
     4670long double log( long double );
     4671float _Complex log( float _Complex );
     4672double _Complex log( double _Complex );
     4673long double _Complex log( long double _Complex );
     4674
     4675float log2( float );§\indexc{log2}§
     4676double log2( double );
     4677long double log2( long double );
     4678float _Complex log2( float _Complex );
     4679double _Complex log2( double _Complex );
     4680long double _Complex log2( long double _Complex );
     4681
     4682float log10( float );§\indexc{log10}§
     4683double log10( double );
     4684long double log10( long double );
     4685float _Complex log10( float _Complex );
     4686double _Complex log10( double _Complex );
     4687long double _Complex log10( long double _Complex );
     4688
     4689float log1p( float );§\indexc{log1p}§
     4690double log1p( double );
     4691long double log1p( long double );
     4692
     4693int ilogb( float );§\indexc{ilogb}§
     4694int ilogb( double );
     4695int ilogb( long double );
     4696
     4697float logb( float );§\indexc{logb}§
     4698double logb( double );
     4699long double logb( long double );
     4700\end{lstlisting}
     4701
     4702
     4703\subsection{Power}
     4704
     4705\begin{lstlisting}
     4706float sqrt( float );§\indexc{sqrt}§
     4707double sqrt( double );
     4708long double sqrt( long double );
     4709float _Complex sqrt( float _Complex );
     4710double _Complex sqrt( double _Complex );
     4711long double _Complex sqrt( long double _Complex );
     4712
     4713float cbrt( float );§\indexc{cbrt}§
     4714double cbrt( double );
     4715long double cbrt( long double );
     4716
     4717float hypot( float, float );§\indexc{hypot}§
     4718double hypot( double, double );
     4719long double hypot( long double, long double );
     4720
     4721float pow( float, float );§\indexc{pow}§
     4722double pow( double, double );
     4723long double pow( long double, long double );
     4724float _Complex pow( float _Complex, float _Complex );
     4725double _Complex pow( double _Complex, double _Complex );
     4726long double _Complex pow( long double _Complex, long double _Complex );
     4727\end{lstlisting}
     4728
     4729
     4730\subsection{Trigonometric}
     4731
     4732\begin{lstlisting}
     4733float sin( float );§\indexc{sin}§
     4734double sin( double );
     4735long double sin( long double );
     4736float _Complex sin( float _Complex );
     4737double _Complex sin( double _Complex );
     4738long double _Complex sin( long double _Complex );
     4739
     4740float cos( float );§\indexc{cos}§
     4741double cos( double );
     4742long double cos( long double );
     4743float _Complex cos( float _Complex );
     4744double _Complex cos( double _Complex );
     4745long double _Complex cos( long double _Complex );
     4746
     4747float tan( float );§\indexc{tan}§
     4748double tan( double );
     4749long double tan( long double );
     4750float _Complex tan( float _Complex );
     4751double _Complex tan( double _Complex );
     4752long double _Complex tan( long double _Complex );
     4753
     4754float asin( float );§\indexc{asin}§
     4755double asin( double );
     4756long double asin( long double );
     4757float _Complex asin( float _Complex );
     4758double _Complex asin( double _Complex );
     4759long double _Complex asin( long double _Complex );
     4760
     4761float acos( float );§\indexc{acos}§
     4762double acos( double );
     4763long double acos( long double );
     4764float _Complex acos( float _Complex );
     4765double _Complex acos( double _Complex );
     4766long double _Complex acos( long double _Complex );
     4767
     4768float atan( float );§\indexc{atan}§
     4769double atan( double );
     4770long double atan( long double );
     4771float _Complex atan( float _Complex );
     4772double _Complex atan( double _Complex );
     4773long double _Complex atan( long double _Complex );
     4774
     4775float atan2( float, float );§\indexc{atan2}§
     4776double atan2( double, double );
     4777long double atan2( long double, long double );
     4778
     4779float atan( float, float );                                                             // alternative name for atan2
     4780double atan( double, double );§\indexc{atan}§
     4781long double atan( long double, long double );
     4782\end{lstlisting}
     4783
     4784
     4785\subsection{Hyperbolic}
     4786
     4787\begin{lstlisting}
     4788float sinh( float );§\indexc{sinh}§
     4789double sinh( double );
     4790long double sinh( long double );
     4791float _Complex sinh( float _Complex );
     4792double _Complex sinh( double _Complex );
     4793long double _Complex sinh( long double _Complex );
     4794
     4795float cosh( float );§\indexc{cosh}§
     4796double cosh( double );
     4797long double cosh( long double );
     4798float _Complex cosh( float _Complex );
     4799double _Complex cosh( double _Complex );
     4800long double _Complex cosh( long double _Complex );
     4801
     4802float tanh( float );§\indexc{tanh}§
     4803double tanh( double );
     4804long double tanh( long double );
     4805float _Complex tanh( float _Complex );
     4806double _Complex tanh( double _Complex );
     4807long double _Complex tanh( long double _Complex );
     4808
     4809float asinh( float );§\indexc{asinh}§
     4810double asinh( double );
     4811long double asinh( long double );
     4812float _Complex asinh( float _Complex );
     4813double _Complex asinh( double _Complex );
     4814long double _Complex asinh( long double _Complex );
     4815
     4816float acosh( float );§\indexc{acosh}§
     4817double acosh( double );
     4818long double acosh( long double );
     4819float _Complex acosh( float _Complex );
     4820double _Complex acosh( double _Complex );
     4821long double _Complex acosh( long double _Complex );
     4822
     4823float atanh( float );§\indexc{atanh}§
     4824double atanh( double );
     4825long double atanh( long double );
     4826float _Complex atanh( float _Complex );
     4827double _Complex atanh( double _Complex );
     4828long double _Complex atanh( long double _Complex );
     4829\end{lstlisting}
     4830
     4831
     4832\subsection{Error / Gamma}
     4833
     4834\begin{lstlisting}
     4835float erf( float );§\indexc{erf}§
     4836double erf( double );
     4837long double erf( long double );
     4838float _Complex erf( float _Complex );
     4839double _Complex erf( double _Complex );
     4840long double _Complex erf( long double _Complex );
     4841
     4842float erfc( float );§\indexc{erfc}§
     4843double erfc( double );
     4844long double erfc( long double );
     4845float _Complex erfc( float _Complex );
     4846double _Complex erfc( double _Complex );
     4847long double _Complex erfc( long double _Complex );
     4848
     4849float lgamma( float );§\indexc{lgamma}§
     4850double lgamma( double );
     4851long double lgamma( long double );
     4852float lgamma( float, int * );
     4853double lgamma( double, int * );
     4854long double lgamma( long double, int * );
     4855
     4856float tgamma( float );§\indexc{tgamma}§
     4857double tgamma( double );
     4858long double tgamma( long double );
     4859\end{lstlisting}
     4860
     4861
     4862\subsection{Nearest Integer}
     4863
     4864\begin{lstlisting}
     4865float floor( float );§\indexc{floor}§
     4866double floor( double );
     4867long double floor( long double );
     4868
     4869float ceil( float );§\indexc{ceil}§
     4870double ceil( double );
     4871long double ceil( long double );
     4872
     4873float trunc( float );§\indexc{trunc}§
     4874double trunc( double );
     4875long double trunc( long double );
     4876
     4877float rint( float );§\indexc{rint}§
     4878long double rint( long double );
     4879long int rint( float );
     4880long int rint( double );
     4881long int rint( long double );
     4882long long int rint( float );
     4883long long int rint( double );
     4884long long int rint( long double );
     4885
     4886long int lrint( float );§\indexc{lrint}§
     4887long int lrint( double );
     4888long int lrint( long double );
     4889long long int llrint( float );
     4890long long int llrint( double );
     4891long long int llrint( long double );
     4892
     4893float nearbyint( float );§\indexc{nearbyint}§
     4894double nearbyint( double );
     4895long double nearbyint( long double );
     4896
     4897float round( float );§\indexc{round}§
     4898long double round( long double );
     4899long int round( float );
     4900long int round( double );
     4901long int round( long double );
     4902long long int round( float );
     4903long long int round( double );
     4904long long int round( long double );
     4905
     4906long int lround( float );§\indexc{lround}§
     4907long int lround( double );
     4908long int lround( long double );
     4909long long int llround( float );
     4910long long int llround( double );
     4911long long int llround( long double );
     4912\end{lstlisting}
     4913
     4914
     4915\subsection{Manipulation}
     4916
     4917\begin{lstlisting}
     4918float copysign( float, float );§\indexc{copysign}§
     4919double copysign( double, double );
     4920long double copysign( long double, long double );
     4921
     4922float frexp( float, int * );§\indexc{frexp}§
     4923double frexp( double, int * );
     4924long double frexp( long double, int * );
     4925
     4926float ldexp( float, int );§\indexc{ldexp}§
     4927double ldexp( double, int );
     4928long double ldexp( long double, int );
     4929
     4930[ float, float ] modf( float );§\indexc{modf}§
     4931float modf( float, float * );
     4932[ double, double ] modf( double );
     4933double modf( double, double * );
     4934[ long double, long double ] modf( long double );
     4935long double modf( long double, long double * );
     4936
     4937float nextafter( float, float );§\indexc{nextafter}§
     4938double nextafter( double, double );
     4939long double nextafter( long double, long double );
     4940
     4941float nexttoward( float, long double );§\indexc{nexttoward}§
     4942double nexttoward( double, long double );
     4943long double nexttoward( long double, long double );
     4944
     4945float scalbn( float, int );§\indexc{scalbn}§
     4946double scalbn( double, int );
     4947long double scalbn( long double, int );
     4948
     4949float scalbln( float, long int );§\indexc{scalbln}§
     4950double scalbln( double, long int );
     4951long double scalbln( long double, long int );
    44044952\end{lstlisting}
    44054953
     
    44134961\begin{lstlisting}
    44144962// implementation
    4415 struct Rational {
     4963struct Rational {§\indexc{Rational}§
    44164964        long int numerator, denominator;                                        // invariant: denominator > 0
    44174965}; // Rational
  • src/ArgTweak/FunctionFixer.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // FunctionFixer.cc -- 
     7// FunctionFixer.cc --
    88//
    99// Author           : Rodolfo G. Esteves
     
    4242        Expression *FunctionFixer::mutate( UntypedExpr *untypedExpr ) throw ( SemanticError ) {
    4343                assert( untypedExpr != 0 );
    44                 NameExpr *function;
    4544
    46                 if ( ( function = dynamic_cast< NameExpr *>(untypedExpr->get_function()) ) != 0 ) {
     45                if ( NameExpr * function = dynamic_cast< NameExpr *>(untypedExpr->get_function() ) ) {
    4746                        std::list < DeclarationWithType * > options;
    4847                        index->lookupId ( function->get_name(), options );
    4948                        for ( std::list < DeclarationWithType * >::iterator i = options.begin(); i != options.end(); i++ ) {
    50                                 FunctionType *f;
    51                                 if ( ( f = dynamic_cast< FunctionType * > ( (*i)->get_type() ) ) != 0 ) {
     49                                if ( FunctionType * f = dynamic_cast< FunctionType * > ( (*i)->get_type() ) )   {
    5250                                        std::list < DeclarationWithType * > &pars = f->get_parameters();
    53 
    5451                                        bool candidateExists ;
    55                                         for ( std::list < DeclarationWithType * >::iterator p = pars.begin(); p != pars.end(); p++ )
     52                                        for ( std::list < DeclarationWithType * >::iterator p = pars.begin(); p != pars.end(); p++ ) {
    5653                                                if ( ( candidateExists = align( f->get_parameters(), untypedExpr->get_args(), Matcher() ) ) ) break;
    57 
     54                                        }
    5855                                        if ( ! candidateExists ) throw SemanticError("Error in function call");
    5956                                } // if
  • src/CodeGen/CodeGenerator.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // CodeGenerator.cc -- 
     7// CodeGenerator.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:32:16 2016
    13 // Update Count     : 243
     12// Last Modified On : Thu Jun  9 13:21:00 2016
     13// Update Count     : 256
    1414//
    1515
     
    2626#include "SynTree/Statement.h"
    2727#include "SynTree/Type.h"
     28#include "SynTree/Attribute.h"
    2829
    2930#include "Common/utility.h"
     
    3334#include "OperatorTable.h"
    3435#include "GenType.h"
     36
     37#include "InitTweak/InitTweak.h"
    3538
    3639using namespace std;
     
    4548        }
    4649
    47         ostream & CodeGenerator::Indenter::operator()( ostream & output ) {
     50        ostream & CodeGenerator::Indenter::operator()( ostream & output ) const {
    4851          return output << string( cg.cur_indent, ' ' );
    4952        }
    5053
    51         ostream & operator<<( ostream & output, CodeGenerator::Indenter &indent ) {
     54        ostream & operator<<( ostream & output, const CodeGenerator::Indenter &indent ) {
    5255                return indent( output );
    5356        }
    5457
    55         CodeGenerator::CodeGenerator( std::ostream &os ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ) { }
     58        CodeGenerator::LabelPrinter & CodeGenerator::LabelPrinter::operator()( std::list< Label > & l ) {
     59                labels = &l;
     60                return *this;
     61        }
     62
     63        ostream & operator<<( ostream & output, CodeGenerator::LabelPrinter &printLabels ) {
     64                std::list< Label > & labs = *printLabels.labels;
     65                // l.unique(); // assumes a sorted list. Why not use set? Does order matter?
     66                for ( Label & l : labs ) {
     67                        output << l.get_name() + ": ";
     68                        printLabels.cg.genAttributes( l.get_attributes() );
     69                }
     70                return output;
     71        }
     72
     73        CodeGenerator::CodeGenerator( std::ostream &os ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ), printLabels( *this ) { }
    5674
    5775        CodeGenerator::CodeGenerator( std::ostream &os, std::string init, int indentation, bool infunp )
    58                         : indent( *this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
     76                        : indent( *this), cur_indent( indentation ), insideFunction( infunp ), output( os ), printLabels( *this ) {
    5977                //output << std::string( init );
    6078        }
    6179
    6280        CodeGenerator::CodeGenerator( std::ostream &os, char *init, int indentation, bool infunp )
    63                         : indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
     81                        : indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ), printLabels( *this ) {
    6482                //output << std::string( init );
    6583        }
     
    6785        string mangleName( DeclarationWithType *decl ) {
    6886                if ( decl->get_mangleName() != "" ) {
    69                         return decl->get_mangleName();
     87                        // need to incorporate scope level in order to differentiate names for destructors
     88                        return decl->get_scopedMangleName();
    7089                } else {
    7190                        return decl->get_name();
    7291                } // if
    7392        }
     93
     94        void CodeGenerator::genAttributes( std::list< Attribute * > & attributes ) {
     95                if ( ! attributes.empty() ) {
     96                        output << "__attribute__ ((";
     97                        for ( Attribute *& attr : attributes ) {
     98                                if ( ! attr->empty() ) {
     99                                        output << attr->get_name() << "(";
     100                                        genCommaList( attr->get_parameters().begin(), attr->get_parameters().end() );
     101                                        output << ")";
     102                                }
     103                                output << ",";
     104                        }
     105                        output << ")) ";
     106                }
     107        }
     108
    74109
    75110        //*** Declarations
    76111        void CodeGenerator::visit( FunctionDecl *functionDecl ) {
     112                genAttributes( functionDecl->get_attributes() );
     113
    77114                handleStorageClass( functionDecl );
    78115                if ( functionDecl->get_isInline() ) {
     
    99136                handleStorageClass( objectDecl );
    100137                output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
    101        
     138
    102139                if ( objectDecl->get_init() ) {
    103140                        output << " = ";
     
    113150                if ( aggDecl->get_name() != "" )
    114151                        output << aggDecl->get_name();
    115        
     152
    116153                std::list< Declaration * > &memb = aggDecl->get_members();
    117154
     
    119156                        output << " {" << endl;
    120157
    121                         cur_indent += CodeGenerator::tabsize; 
     158                        cur_indent += CodeGenerator::tabsize;
    122159                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    123                                 output << indent; 
     160                                output << indent;
    124161                                (*i)->accept( *this );
    125162                                output << ";" << endl;
    126163                        }
    127164
    128                         cur_indent -= CodeGenerator::tabsize; 
     165                        cur_indent -= CodeGenerator::tabsize;
    129166
    130167                        output << indent << "}";
     
    141178                handleAggregate( aggregateDecl );
    142179        }
    143  
     180
    144181        void CodeGenerator::visit( EnumDecl *aggDecl ) {
    145182                output << "enum ";
     
    147184                if ( aggDecl->get_name() != "" )
    148185                        output << aggDecl->get_name();
    149        
     186
    150187                std::list< Declaration* > &memb = aggDecl->get_members();
    151188
     
    153190                        output << " {" << endl;
    154191
    155                         cur_indent += CodeGenerator::tabsize; 
     192                        cur_indent += CodeGenerator::tabsize;
    156193                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    157194                                ObjectDecl *obj = dynamic_cast< ObjectDecl* >( *i );
    158195                                assert( obj );
    159                                 output << indent << mangleName( obj ); 
     196                                output << indent << mangleName( obj );
    160197                                if ( obj->get_init() ) {
    161198                                        output << " = ";
     
    165202                        } // for
    166203
    167                         cur_indent -= CodeGenerator::tabsize; 
     204                        cur_indent -= CodeGenerator::tabsize;
    168205
    169206                        output << indent << "}";
    170207                } // if
    171208        }
    172  
     209
    173210        void CodeGenerator::visit( TraitDecl *aggregateDecl ) {}
    174  
     211
    175212        void CodeGenerator::visit( TypedefDecl *typeDecl ) {
    176213                output << "typedef ";
    177214                output << genType( typeDecl->get_base(), typeDecl->get_name() );
    178215        }
    179  
     216
    180217        void CodeGenerator::visit( TypeDecl *typeDecl ) {
    181218                // really, we should mutate this into something that isn't a TypeDecl but that requires large-scale changes,
     
    213250                printDesignators( init->get_designators() );
    214251                output << "{ ";
    215                 genCommaList( init->begin_initializers(), init->end_initializers() );
     252                if ( init->begin_initializers() == init->end_initializers() ) {
     253                        // illegal to leave initializer list empty for scalar initializers,
     254                        // but always legal to have 0
     255                        output << "0";
     256                } else {
     257                        genCommaList( init->begin_initializers(), init->end_initializers() );
     258                }
    216259                output << " }";
    217260        }
    218261
    219         void CodeGenerator::visit( Constant *constant ) { 
     262        void CodeGenerator::visit( Constant *constant ) {
    220263                output << constant->get_value() ;
    221264        }
     
    223266        //*** Expressions
    224267        void CodeGenerator::visit( ApplicationExpr *applicationExpr ) {
     268                extension( applicationExpr );
    225269                if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( applicationExpr->get_function() ) ) {
    226270                        OperatorInfo opInfo;
     
    231275                                  case OT_POSTFIXASSIGN:
    232276                                  case OT_INFIXASSIGN:
     277                                  case OT_CTOR:
     278                                  case OT_DTOR:
    233279                                        {
    234280                                                assert( arg != applicationExpr->get_args().end() );
    235281                                                if ( AddressExpr *addrExpr = dynamic_cast< AddressExpr * >( *arg ) ) {
    236                
     282                                                        // remove & from first assignment/ctor argument
    237283                                                        *arg = addrExpr->get_arg();
    238284                                                } else {
     285                                                        // no address-of operator, so must be a pointer - add dereference
    239286                                                        UntypedExpr *newExpr = new UntypedExpr( new NameExpr( "*?" ) );
    240287                                                        newExpr->get_args().push_back( *arg );
     288                                                        assert( (*arg)->get_results().size() == 1 );
     289                                                        Type * type = InitTweak::getPointerBase( (*arg)->get_results().front() );
     290                                                        assert( type );
     291                                                        newExpr->get_results().push_back( type );
    241292                                                        *arg = newExpr;
    242293                                                } // if
    243294                                                break;
    244295                                        }
    245              
     296
    246297                                  default:
    247298                                        // do nothing
    248299                                        ;
    249300                                }
    250            
     301
    251302                                switch ( opInfo.type ) {
    252303                                  case OT_INDEX:
     
    257308                                        output << "]";
    258309                                        break;
    259              
     310
    260311                                  case OT_CALL:
    261312                                        // there are no intrinsic definitions of the function call operator
    262313                                        assert( false );
    263314                                        break;
    264              
     315
     316                                  case OT_CTOR:
     317                                  case OT_DTOR:
     318                                        if ( applicationExpr->get_args().size() == 1 ) {
     319                                                // the expression fed into a single parameter constructor or destructor
     320                                                // may contain side effects, so must still output this expression
     321                                                output << "(";
     322                                                (*arg++)->accept( *this );
     323                                                output << ") /* " << opInfo.inputName << " */";
     324                                        } else if ( applicationExpr->get_args().size() == 2 ) {
     325                                                // intrinsic two parameter constructors are essentially bitwise assignment
     326                                                output << "(";
     327                                                (*arg++)->accept( *this );
     328                                                output << opInfo.symbol;
     329                                                (*arg)->accept( *this );
     330                                                output << ") /* " << opInfo.inputName << " */";
     331                                        } else {
     332                                                // no constructors with 0 or more than 2 parameters
     333                                                assert( false );
     334                                        }
     335                                        break;
     336
    265337                                  case OT_PREFIX:
    266338                                  case OT_PREFIXASSIGN:
     
    271343                                        output << ")";
    272344                                        break;
    273              
     345
    274346                                  case OT_POSTFIX:
    275347                                  case OT_POSTFIXASSIGN:
     
    278350                                        output << opInfo.symbol;
    279351                                        break;
     352
    280353
    281354                                  case OT_INFIX:
     
    288361                                        output << ")";
    289362                                        break;
    290              
     363
    291364                                  case OT_CONSTANT:
    292365                                  case OT_LABELADDRESS:
     
    307380                } // if
    308381        }
    309  
     382
    310383        void CodeGenerator::visit( UntypedExpr *untypedExpr ) {
     384                extension( untypedExpr );
    311385                if ( NameExpr *nameExpr = dynamic_cast< NameExpr* >( untypedExpr->get_function() ) ) {
    312386                        OperatorInfo opInfo;
     
    321395                                        output << "]";
    322396                                        break;
    323              
     397
    324398                                  case OT_CALL:
    325399                                        assert( false );
    326                                         break;
    327              
     400
     401
     402                                  case OT_CTOR:
     403                                  case OT_DTOR:
     404                                        if ( untypedExpr->get_args().size() == 1 ) {
     405                                                // the expression fed into a single parameter constructor or destructor
     406                                                // may contain side effects, so must still output this expression
     407                                                output << "(";
     408                                                (*arg++)->accept( *this );
     409                                                output << ") /* " << opInfo.inputName << " */";
     410                                        } else if ( untypedExpr->get_args().size() == 2 ) {
     411                                                // intrinsic two parameter constructors are essentially bitwise assignment
     412                                                output << "(";
     413                                                (*arg++)->accept( *this );
     414                                                output << opInfo.symbol;
     415                                                (*arg)->accept( *this );
     416                                                output << ") /* " << opInfo.inputName << " */";
     417                                        } else {
     418                                                // no constructors with 0 or more than 2 parameters
     419                                                assert( false );
     420                                        }
     421                                        break;
     422
    328423                                  case OT_PREFIX:
    329424                                  case OT_PREFIXASSIGN:
     
    335430                                        output << ")";
    336431                                        break;
    337              
     432
    338433                                  case OT_POSTFIX:
    339434                                  case OT_POSTFIXASSIGN:
     
    342437                                        output << opInfo.symbol;
    343438                                        break;
    344  
     439
    345440                                  case OT_INFIX:
    346441                                  case OT_INFIXASSIGN:
     
    352447                                        output << ")";
    353448                                        break;
    354                                        
     449
    355450                                  case OT_CONSTANT:
    356451                                        // there are no intrinsic definitions of 0 or 1 as functions
     
    370465                } // if
    371466        }
    372  
     467
    373468        void CodeGenerator::visit( NameExpr *nameExpr ) {
     469                extension( nameExpr );
    374470                OperatorInfo opInfo;
    375471                if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
     
    380476                } // if
    381477        }
    382  
     478
    383479        void CodeGenerator::visit( AddressExpr *addressExpr ) {
     480                extension( addressExpr );
    384481                output << "(&";
    385482                // this hack makes sure that we don't convert "constant_zero" to "0" if we're taking its address
     
    393490
    394491        void CodeGenerator::visit( CastExpr *castExpr ) {
     492                extension( castExpr );
    395493                output << "(";
    396494                if ( castExpr->get_results().empty() ) {
     
    409507                output << ")";
    410508        }
    411  
     509
    412510        void CodeGenerator::visit( UntypedMemberExpr *memberExpr ) {
    413511                assert( false );
    414512        }
    415  
     513
    416514        void CodeGenerator::visit( MemberExpr *memberExpr ) {
     515                extension( memberExpr );
    417516                memberExpr->get_aggregate()->accept( *this );
    418517                output << "." << mangleName( memberExpr->get_member() );
    419518        }
    420  
     519
    421520        void CodeGenerator::visit( VariableExpr *variableExpr ) {
     521                extension( variableExpr );
    422522                OperatorInfo opInfo;
    423523                if ( variableExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( variableExpr->get_var()->get_name(), opInfo ) && opInfo.type == OT_CONSTANT ) {
     
    427527                } // if
    428528        }
    429  
     529
    430530        void CodeGenerator::visit( ConstantExpr *constantExpr ) {
    431531                assert( constantExpr->get_constant() );
     532                extension( constantExpr );
    432533                constantExpr->get_constant()->accept( *this );
    433534        }
    434  
     535
    435536        void CodeGenerator::visit( SizeofExpr *sizeofExpr ) {
     537                extension( sizeofExpr );
    436538                output << "sizeof(";
    437539                if ( sizeofExpr->get_isType() ) {
     
    444546
    445547        void CodeGenerator::visit( AlignofExpr *alignofExpr ) {
     548                extension( alignofExpr );
    446549                // use GCC extension to avoid bumping std to C11
    447550                output << "__alignof__(";
     
    459562
    460563        void CodeGenerator::visit( OffsetofExpr *offsetofExpr ) {
     564                extension( offsetofExpr );
    461565                // use GCC builtin
    462566                output << "__builtin_offsetof(";
     
    469573                assert( false && "OffsetPackExpr should not reach code generation" );
    470574        }
    471  
     575
    472576        void CodeGenerator::visit( LogicalExpr *logicalExpr ) {
     577                extension( logicalExpr );
    473578                output << "(";
    474579                logicalExpr->get_arg1()->accept( *this );
     
    481586                output << ")";
    482587        }
    483  
     588
    484589        void CodeGenerator::visit( ConditionalExpr *conditionalExpr ) {
     590                extension( conditionalExpr );
    485591                output << "(";
    486592                conditionalExpr->get_arg1()->accept( *this );
     
    491597                output << ")";
    492598        }
    493  
     599
    494600        void CodeGenerator::visit( CommaExpr *commaExpr ) {
     601                extension( commaExpr );
    495602                output << "(";
    496603                commaExpr->get_arg1()->accept( *this );
     
    499606                output << ")";
    500607        }
    501  
     608
    502609        void CodeGenerator::visit( TupleExpr *tupleExpr ) {}
    503  
     610
    504611        void CodeGenerator::visit( TypeExpr *typeExpr ) {}
    505612
    506613        void CodeGenerator::visit( AsmExpr *asmExpr ) {
     614                extension( asmExpr );
    507615                if ( asmExpr->get_inout() ) {
    508616                        output << "[ ";
     
    532640                        }
    533641                }
    534                 cur_indent -= CodeGenerator::tabsize; 
     642                cur_indent -= CodeGenerator::tabsize;
    535643
    536644                output << indent << "}";
     
    538646
    539647        void CodeGenerator::visit( ExprStmt *exprStmt ) {
    540                 // I don't see why this check is necessary.
    541                 // If this starts to cause problems then put it back in,
    542                 // with an explanation
    543648                assert( exprStmt );
    544 
    545                 // if ( exprStmt != 0 ) {
    546                 exprStmt->get_expr()->accept( *this );
    547                 output << ";" ;
    548                 // } // if
     649                // cast the top-level expression to void to reduce gcc warnings.
     650                Expression * expr = new CastExpr( exprStmt->get_expr() );
     651                expr->accept( *this );
     652                output << ";";
    549653        }
    550654
     
    589693                switchStmt->get_condition()->accept( *this );
    590694                output << " ) ";
    591                
     695
    592696                output << "{" << std::endl;
    593697                cur_indent += CodeGenerator::tabsize;
     
    609713                } // if
    610714                output << ":\n";
    611                
     715
    612716                std::list<Statement *> sts = caseStmt->get_statements();
    613717
     
    626730                        if ( ! branchStmt->get_target().empty() )
    627731                                output << "goto " << branchStmt->get_target();
    628                         else { 
     732                        else {
    629733                                if ( branchStmt->get_computedTarget() != 0 ) {
    630734                                        output << "goto *";
     
    646750        void CodeGenerator::visit( ReturnStmt *returnStmt ) {
    647751                output << "return ";
    648 
    649                 // xxx -- check for null expression;
    650                 if ( returnStmt->get_expr() ) {
    651                         returnStmt->get_expr()->accept( *this );
    652                 } // if
     752                maybeAccept( returnStmt->get_expr(), *this );
    653753                output << ";";
    654754        }
    655755
    656756        void CodeGenerator::visit( WhileStmt *whileStmt ) {
    657                 if ( whileStmt->get_isDoWhile() )
     757                if ( whileStmt->get_isDoWhile() ) {
    658758                        output << "do" ;
    659                 else {
     759                } else {
    660760                        output << "while (" ;
    661761                        whileStmt->get_condition()->accept( *this );
     
    677777
    678778        void CodeGenerator::visit( ForStmt *forStmt ) {
    679                 // initialization is always hoisted, so don't 
    680                 // bother doing anything with that 
     779                // initialization is always hoisted, so don't
     780                // bother doing anything with that
    681781                output << "for (;";
    682782
    683                 if ( forStmt->get_condition() != 0 )
     783                if ( forStmt->get_condition() != 0 ) {
    684784                        forStmt->get_condition()->accept( *this );
     785                }
    685786                output << ";";
    686787
    687                 if ( forStmt->get_increment() != 0 )
    688                         forStmt->get_increment()->accept( *this );
     788                if ( forStmt->get_increment() != 0 ) {
     789                        // cast the top-level expression to void to reduce gcc warnings.
     790                        Expression * expr = new CastExpr( forStmt->get_increment() );
     791                        expr->accept( *this );
     792                }
    689793                output << ") ";
    690794
     
    702806        void CodeGenerator::visit( DeclStmt *declStmt ) {
    703807                declStmt->get_decl()->accept( *this );
    704        
     808
    705809                if ( doSemicolon( declStmt->get_decl() ) ) {
    706810                        output << ";";
    707811                } // if
    708         }
    709 
    710         std::string CodeGenerator::printLabels( std::list< Label > &l ) {
    711                 std::string str( "" );
    712                 l.unique(); // assumes a sorted list. Why not use set?
    713 
    714                 for ( std::list< Label >::iterator i = l.begin(); i != l.end(); i++ )
    715                         str += *i + ": ";
    716 
    717                 return str;
    718812        }
    719813
  • src/CodeGen/CodeGenerator.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // CodeGenerator.h -- 
     7// CodeGenerator.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:32:24 2016
    13 // Update Count     : 28
     12// Last Modified On : Thu Jun  9 13:15:58 2016
     13// Update Count     : 29
    1414//
    1515
     
    6060                virtual void visit( MemberExpr *memberExpr );
    6161                virtual void visit( VariableExpr *variableExpr );
    62                 virtual void visit( ConstantExpr *constantExpr ); 
     62                virtual void visit( ConstantExpr *constantExpr );
    6363                virtual void visit( SizeofExpr *sizeofExpr );
    6464                virtual void visit( AlignofExpr *alignofExpr );
     
    8585                virtual void visit( ForStmt * );
    8686                virtual void visit( NullStmt * );
    87                 virtual void visit( DeclStmt * );
     87                virtual void visit( DeclStmt * );
     88
     89                void genAttributes( std::list< Attribute * > & attributes );
    8890
    8991                template< class Iterator > void genCommaList( Iterator begin, Iterator end );
     
    9294                        Indenter(CodeGenerator &cg) : cg(cg) {}
    9395                        CodeGenerator & cg;
    94                         std::ostream& operator()(std::ostream & os);
     96                        std::ostream& operator()(std::ostream & os) const;
    9597                };
     98
     99                struct LabelPrinter {
     100                        LabelPrinter(CodeGenerator &cg) : cg(cg), labels( 0 ) {}
     101                        LabelPrinter & operator()( std::list< Label > & l );
     102                        CodeGenerator & cg;
     103                        std::list< Label > * labels;
     104                };
     105
     106                void extension( Expression *expr ) {
     107                        if ( expr->get_extension() ) {
     108                                output << "__extension__ ";
     109                        } // if
     110                } // extension
    96111          private:
    97112
     
    100115                bool insideFunction;
    101116                std::ostream &output;
     117                LabelPrinter printLabels;
    102118
    103119                void printDesignators( std::list< Expression * > & );
    104                 static std::string printLabels ( std::list < Label > & );
    105120                void handleStorageClass( Declaration *decl );
    106121                void handleAggregate( AggregateDecl *aggDecl );
     
    108123
    109124        };
    110        
     125
    111126        template< class Iterator >
    112127        void CodeGenerator::genCommaList( Iterator begin, Iterator end ) {
     
    119134                } // for
    120135        }
    121  
     136
    122137        inline bool doSemicolon( Declaration* decl ) {
    123138                if ( FunctionDecl* func = dynamic_cast< FunctionDecl* >( decl ) ) {
  • src/CodeGen/FixNames.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // FixNames.cc -- 
     7// FixNames.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 23:36:42 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Mon Apr 11 15:38:10 2016
    1313// Update Count     : 1
    1414//
     
    2626                virtual void visit( ObjectDecl *objectDecl );
    2727                virtual void visit( FunctionDecl *functionDecl );
     28
     29                virtual void visit( CompoundStmt *compoundStmt );
     30
     31          private:
     32                int scopeLevel = 1;
     33
     34                void fixDWT( DeclarationWithType *dwt );
    2835        };
    2936
     
    3340        }
    3441
    35         void fixDWT( DeclarationWithType *dwt ) {
     42        void FixNames::fixDWT( DeclarationWithType *dwt ) {
    3643                if ( dwt->get_name() != "" ) {
    3744                        if ( LinkageSpec::isDecoratable( dwt->get_linkage() ) ) {
    3845                                dwt->set_mangleName( SymTab::Mangler::mangle( dwt ) );
     46                                dwt->set_scopeLevel( scopeLevel );
    3947                        } // if
    4048                } // if
     
    5058                fixDWT( functionDecl );
    5159        }
     60
     61        void FixNames::visit( CompoundStmt *compoundStmt ) {
     62                scopeLevel++;
     63                Visitor::visit( compoundStmt );
     64                scopeLevel--;
     65        }
    5266} // namespace CodeGen
    5367
  • src/CodeGen/OperatorTable.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // OperatorTable.cc -- 
     7// OperatorTable.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 17:41:14 2015
    13 // Update Count     : 5
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Apr 14 16:48:27 2016
     13// Update Count     : 9
    1414//
    1515
     
    2121                const OperatorInfo tableValues[] = {
    2222                        {       "?[?]",         "",             "_operator_index",                              OT_INDEX                        },
     23                        {       "?{}",          "=",            "_constructor",                                 OT_CTOR                         },
     24                        {       "^?{}",         "",             "_destructor",                                  OT_DTOR                         },
    2325                        {       "?()",          "",             "_operator_call",                               OT_CALL                         },
    2426                        {       "?++",          "++",   "_operator_postincr",                   OT_POSTFIXASSIGN        },
  • src/CodeGen/OperatorTable.h

    r1b5c81ed rf80e0218  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 16:09:27 2015
    13 // Update Count     : 3
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Jun 24 16:17:57 2015
     13// Update Count     : 5
    1414//
    1515
     
    2222        enum OperatorType {
    2323                OT_INDEX,
     24                OT_CTOR,
     25                OT_DTOR,
    2426                OT_CALL,
    2527                OT_PREFIX,
  • src/Common/utility.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // utility.h -- 
     7// utility.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul  2 18:04:41 2015
    13 // Update Count     : 16
     12// Last Modified On : Wed Jun  8 17:33:59 2016
     13// Update Count     : 22
    1414//
    1515
     
    3333}
    3434
     35template<typename T, typename U>
     36struct maybeBuild_t {
     37        static T * doit( const U *orig ) {
     38                if ( orig ) {
     39                        return orig->build();
     40                } else {
     41                        return 0;
     42                } // if
     43        }
     44};
     45
    3546template< typename T, typename U >
    3647static inline T * maybeBuild( const U *orig ) {
    37         if ( orig ) {
    38                 return orig->build();
    39         } else {
    40                 return 0;
    41         } // if
     48        return maybeBuild_t<T,U>::doit(orig);
    4249}
    4350
     
    6269                        os << std::string( indent,  ' ' );
    6370                        (*i)->print( os, indent + 2 );
     71                        // need an endl after each element because it's not easy to know when each individual item should end
    6472                        os << std::endl;
    6573                } // if
     
    128136}
    129137
    130 template < typename T > 
     138template < typename T >
    131139std::string toString ( T value ) {
    132140        std::ostringstream os;
  • src/ControlStruct/LabelFixer.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // LabelFixer.cc -- 
     7// LabelFixer.cc --
    88//
    99// Author           : Rodolfo G. Esteves
     
    8686
    8787
    88         // sets the definition of the labelTable entry to be the provided 
     88        // sets the definition of the labelTable entry to be the provided
    8989        // statement for every label in the list parameter. Happens for every kind of statement
    9090        Label LabelFixer::setLabelsDef( std::list< Label > &llabel, Statement *definition ) {
     
    9595
    9696                for ( std::list< Label >::iterator i = llabel.begin(); i != llabel.end(); i++ ) {
    97                         if ( labelTable.find( *i ) == labelTable.end() ) {
     97                        Label & l = *i;
     98                        l.set_statement( definition ); // attach statement to the label to be used later
     99                        if ( labelTable.find( l ) == labelTable.end() ) {
    98100                                // all labels on this statement need to use the same entry, so this should only be created once
    99101                                // undefined and unused until now, add an entry
    100                                 labelTable[ *i ] =  e;
    101                         } else if ( labelTable[ *i ]->defined() ) {
     102                                labelTable[ l ] =  e;
     103                        } else if ( labelTable[ l ]->defined() ) {
    102104                                // defined twice, error
    103                                 throw SemanticError( "Duplicate definition of label: " + *i );
     105                                throw SemanticError( "Duplicate definition of label: " + l.get_name() );
    104106                        }       else {
    105107                                // used previously, but undefined until now -> link with this entry
    106                                 delete labelTable[ *i ];
    107                                 labelTable[ *i ] = e;
     108                                delete labelTable[ l ];
     109                                labelTable[ l ] = e;
    108110                        } // if
    109111                } // for
    110112
    111                 // produce one of the labels attached to this statement to be 
     113                // produce one of the labels attached to this statement to be
    112114                // temporarily used as the canonical label
    113115                return labelTable[ llabel.front() ]->get_label();
    114116        }
    115117
    116         // A label was used, add it ot the table if it isn't already there
     118        // A label was used, add it to the table if it isn't already there
    117119        template< typename UsageNode >
    118120        void LabelFixer::setLabelsUsg( Label orgValue, UsageNode *use ) {
     
    130132                for ( std::map< Label, Entry * >::iterator i = labelTable.begin(); i != labelTable.end(); ++i ) {
    131133                        if ( ! i->second->defined() ) {
    132                                 throw SemanticError( "Use of undefined label: " + i->first );
     134                                throw SemanticError( "Use of undefined label: " + i->first.get_name() );
    133135                        }
    134136                        (*ret)[ i->first ] = i->second->get_definition();
  • src/ControlStruct/LabelFixer.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // LabelFixer.h -- 
     7// LabelFixer.h --
    88//
    99// Author           : Rodolfo G. Esteves
     
    2020#include "SynTree/SynTree.h"
    2121#include "SynTree/Visitor.h"
     22#include "SynTree/Label.h"
    2223#include "LabelGenerator.h"
    23 
    2424#include <map>
    2525
     
    7474
    7575                  private:
    76                         Label label; 
     76                        Label label;
    7777                        Statement *definition;
    7878                };
    79                  
     79
    8080                std::map < Label, Entry *> labelTable;
    8181                LabelGenerator *generator;
  • src/ControlStruct/LabelGenerator.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // LabelGenerator.cc -- 
     7// LabelGenerator.cc --
    88//
    99// Author           : Rodolfo G. Esteves
     
    1818
    1919#include "LabelGenerator.h"
     20#include "SynTree/Label.h"
     21#include "SynTree/Attribute.h"
    2022
    2123namespace ControlStruct {
     
    3335                os << "__L" << current++ << "__" << suffix;
    3436                std::string ret = os.str();
    35                 return Label( ret );
     37                Label l( ret );
     38                l.get_attributes().push_back( new Attribute("unused") );
     39                return l;
    3640        }
    3741} // namespace ControlStruct
  • src/ControlStruct/MLEMutator.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // MLEMutator.cc -- 
     7// MLEMutator.cc --
    88//
    99// Author           : Rodolfo G. Esteves
     
    1414//
    1515
    16 // NOTE: There are two known subtle differences from the code that uC++ 
     16// NOTE: There are two known subtle differences from the code that uC++
    1717// generates for the same input
    1818// -CFA puts the break label inside at the end of a switch, uC++ puts it after
     
    2727#include "SynTree/Statement.h"
    2828#include "SynTree/Expression.h"
     29#include "SynTree/Attribute.h"
    2930
    3031namespace ControlStruct {
     
    3334                targetTable = 0;
    3435        }
    35 
    36         // break labels have to come after the statement they break out of,
     36        namespace {
     37                Statement * isLoop( Statement * stmt ) { return dynamic_cast< WhileStmt * >( stmt ) ? stmt : dynamic_cast< ForStmt * >( stmt ) ? stmt : 0; }
     38        }
     39
     40        // break labels have to come after the statement they break out of,
    3741        // so mutate a statement, then if they inform us through the breakLabel field
    38         // tha they need a place to jump to on a break statement, add the break label 
     42        // tha they need a place to jump to on a break statement, add the break label
    3943        // to the body of statements
    4044        void MLEMutator::fixBlock( std::list< Statement * > &kids ) {
     
    4448                        if ( ! get_breakLabel().empty() ) {
    4549                                std::list< Statement * >::iterator next = k+1;
    46                                 if ( next == kids.end() ) {
    47                                         std::list<Label> ls; ls.push_back( get_breakLabel() );
    48                                         kids.push_back( new NullStmt( ls ) );
    49                                 } else {
    50                                         (*next)->get_labels().push_back( get_breakLabel() );
    51                                 }
    52 
     50                                std::list<Label> ls; ls.push_back( get_breakLabel() );
     51                                kids.insert( next, new NullStmt( ls ) );
    5352                                set_breakLabel("");
    5453                        } // if
     
    6059                if ( labeledBlock ) {
    6160                        Label brkLabel = generator->newLabel("blockBreak");
    62                         enclosingBlocks.push_back( Entry( cmpndStmt, brkLabel ) );
     61                        enclosingControlStructures.push_back( Entry( cmpndStmt, brkLabel ) );
    6362                } // if
    6463
     
    6968
    7069                if ( labeledBlock ) {
    71                         assert( ! enclosingBlocks.empty() );
    72                         if ( ! enclosingBlocks.back().useBreakExit().empty() ) {
    73                                 set_breakLabel( enclosingBlocks.back().useBreakExit() );
    74                         }
    75                         enclosingBlocks.pop_back();
     70                        assert( ! enclosingControlStructures.empty() );
     71                        if ( ! enclosingControlStructures.back().useBreakExit().empty() ) {
     72                                set_breakLabel( enclosingControlStructures.back().useBreakExit() );
     73                        }
     74                        enclosingControlStructures.pop_back();
    7675                } // if
    7776
     
    8180        template< typename LoopClass >
    8281        Statement *MLEMutator::handleLoopStmt( LoopClass *loopStmt ) {
    83                 // remember this as the most recent enclosing loop, then mutate 
     82                // remember this as the most recent enclosing loop, then mutate
    8483                // the body of the loop -- this will determine whether brkLabel
    8584                // and contLabel are used with branch statements
     
    8786                Label brkLabel = generator->newLabel("loopBreak");
    8887                Label contLabel = generator->newLabel("loopContinue");
    89                 enclosingLoops.push_back( Entry( loopStmt, brkLabel, contLabel ) );
     88                enclosingControlStructures.push_back( Entry( loopStmt, brkLabel, contLabel ) );
    9089                loopStmt->set_body ( loopStmt->get_body()->acceptMutator( *this ) );
    9190
    9291                // sanity check that the enclosing loops have been popped correctly
    93                 Entry &e = enclosingLoops.back();
     92                Entry &e = enclosingControlStructures.back();
    9493                assert ( e == loopStmt );
    9594
     
    9796                // two labels, if they are used.
    9897                loopStmt->set_body( mutateLoop( loopStmt->get_body(), e ) );
    99                 enclosingLoops.pop_back();
     98                enclosingControlStructures.pop_back();
    10099
    101100                return loopStmt;
     
    111110        template< typename SwitchClass >
    112111        Statement *MLEMutator::handleSwitchStmt( SwitchClass *switchStmt ) {
    113                 // generate a label for breaking out of a labeled switch 
     112                // generate a label for breaking out of a labeled switch
    114113                Label brkLabel = generator->newLabel("switchBreak");
    115                 enclosingSwitches.push_back( Entry(switchStmt, brkLabel) );
    116                 mutateAll( switchStmt->get_branches(), *this ); 
    117 
    118                 Entry &e = enclosingSwitches.back();
     114                enclosingControlStructures.push_back( Entry(switchStmt, brkLabel) );
     115                mutateAll( switchStmt->get_branches(), *this );
     116
     117                Entry &e = enclosingControlStructures.back();
    119118                assert ( e == switchStmt );
    120119
    121120                // only generate break label if labeled break is used
    122121                if (e.isBreakUsed()) {
    123                         // for the purposes of keeping switch statements uniform (i.e. all statements that are 
    124                         // direct children of a switch should be CastStmts), append the exit label + break to the 
     122                        // for the purposes of keeping switch statements uniform (i.e. all statements that are
     123                        // direct children of a switch should be CastStmts), append the exit label + break to the
    125124                        // last case statement; create a default case if there are no cases
    126125                        std::list< Statement * > &branches = switchStmt->get_branches();
     
    131130                        if ( CaseStmt * c = dynamic_cast< CaseStmt * >( branches.back() ) ) {
    132131                                std::list<Label> temp; temp.push_back( brkLabel );
    133                                 c->get_statements().push_back( new BranchStmt( temp, Label(""), BranchStmt::Break ) );
     132                                c->get_statements().push_back( new BranchStmt( temp, Label("brkLabel"), BranchStmt::Break ) );
    134133                        } else assert(0); // as of this point, all branches of a switch are still CaseStmts
    135134                }
    136135
    137                 assert ( enclosingSwitches.back() == switchStmt );
    138                 enclosingSwitches.pop_back();
     136                assert ( enclosingControlStructures.back() == switchStmt );
     137                enclosingControlStructures.pop_back();
    139138                return switchStmt;
    140139        }
     
    143142                std::string originalTarget = branchStmt->get_originalTarget();
    144143
    145                 if ( branchStmt->get_type() == BranchStmt::Goto )
     144                std::list< Entry >::reverse_iterator targetEntry;
     145                if ( branchStmt->get_type() == BranchStmt::Goto ) {
    146146                        return branchStmt;
    147 
    148                 // test if continue target is a loop
    149                 if ( branchStmt->get_type() == BranchStmt::Continue) {
    150                         if ( enclosingLoops.empty() ) {
    151                                 throw SemanticError( "'continue' outside a loop" );
    152                         } else if ( branchStmt->get_target() != "" && std::find( enclosingLoops.begin(), enclosingLoops.end(), (*targetTable)[branchStmt->get_target()] ) == enclosingLoops.end() ) {
    153                                 throw SemanticError( "'continue' target label must be an enclosing loop: " + originalTarget );
    154                         }
    155                 }
    156 
    157                 if ( branchStmt->get_type() == BranchStmt::Break && (enclosingLoops.empty() && enclosingSwitches.empty() && enclosingBlocks.empty() ) )
    158                         throw SemanticError( "'break' outside a loop or switch" );
    159 
    160                 if ( branchStmt->get_target() == "" ) return branchStmt;
    161 
    162                 if ( targetTable->find( branchStmt->get_target() ) == targetTable->end() )
     147                } else if ( branchStmt->get_type() == BranchStmt::Continue) {
     148                        // continue target must be a loop
     149                        if ( branchStmt->get_target() == "" ) {
     150                                targetEntry = std::find_if( enclosingControlStructures.rbegin(), enclosingControlStructures.rend(), [](Entry &e) { return isLoop( e.get_controlStructure() ); } );
     151                        } else {
     152                                // labelled continue - lookup label in table ot find attached control structure
     153                                targetEntry = std::find( enclosingControlStructures.rbegin(), enclosingControlStructures.rend(), (*targetTable)[branchStmt->get_target()] );
     154                        }
     155                        if ( targetEntry == enclosingControlStructures.rend() || ! isLoop( targetEntry->get_controlStructure() ) ) {
     156                                throw SemanticError( "'continue' target must be an enclosing loop: " + originalTarget );
     157                        }
     158                } else if ( branchStmt->get_type() == BranchStmt::Break ) {
     159                        if ( enclosingControlStructures.empty() ) throw SemanticError( "'break' outside a loop, switch, or labelled block" );
     160                        targetEntry = enclosingControlStructures.rbegin();
     161                } else {
     162                        assert( false );
     163                }
     164
     165                if ( branchStmt->get_target() != "" && targetTable->find( branchStmt->get_target() ) == targetTable->end() ) {
    163166                        throw SemanticError("The label defined in the exit loop statement does not exist: " + originalTarget );  // shouldn't happen (since that's already checked)
    164 
    165                 std::list< Entry >::iterator check;
    166                 if ( ( check = std::find( enclosingLoops.begin(), enclosingLoops.end(), (*targetTable)[branchStmt->get_target()] ) ) == enclosingLoops.end() )
    167                         // not in loop, checking if in block
    168                         if ( (check = std::find( enclosingBlocks.begin(), enclosingBlocks.end(), (*targetTable)[branchStmt->get_target()] )) == enclosingBlocks.end() )
    169                                 // neither in loop nor in block, checking if in switch/choose
    170                                 if ( (check = std::find( enclosingSwitches.begin(), enclosingSwitches.end(), (*targetTable)[branchStmt->get_target()] )) == enclosingSwitches.end() )
    171                                         throw SemanticError("The target specified in the exit loop statement does not correspond to an enclosing control structure: " + originalTarget );
    172 
    173                 // what about exiting innermost block or switch???
    174                 if ( enclosingLoops.back() == (*check) )
    175                         return branchStmt;                              // exit the innermost loop (labels unnecessary)
     167                }
    176168
    177169                // branch error checks, get the appropriate label name and create a goto
     
    179171                switch ( branchStmt->get_type() ) {
    180172                  case BranchStmt::Break:
    181                                 assert( check->useBreakExit() != "");
    182                                 exitLabel = check->useBreakExit();
     173                                assert( targetEntry->useBreakExit() != "");
     174                                exitLabel = targetEntry->useBreakExit();
    183175                                break;
    184176                  case BranchStmt::Continue:
    185                                 assert( check->useContExit() != "");
    186                                 exitLabel = check->useContExit();
     177                                assert( targetEntry->useContExit() != "");
     178                                exitLabel = targetEntry->useContExit();
    187179                                break;
    188180                  default:
     
    190182                } // switch
    191183
    192                 return new BranchStmt( std::list<Label>(), exitLabel, BranchStmt::Goto );
     184                if ( branchStmt->get_target() == "" && branchStmt->get_type() != BranchStmt::Continue ) {
     185                        // unlabelled break/continue - can keep branch as break/continue for extra semantic information, but add
     186                        // exitLabel as its destination so that label passes can easily determine where the break/continue goes to
     187                        branchStmt->set_target( exitLabel );
     188                        return branchStmt;
     189                } else {
     190                        // labelled break/continue - can't easily emulate this with break and continue, so transform into a goto
     191                        delete branchStmt;
     192                        return new BranchStmt( std::list<Label>(), exitLabel, BranchStmt::Goto );
     193                }
    193194        }
    194195
     
    206207                        // continue label goes in the body as the last statement
    207208                        std::list< Label > labels; labels.push_back( e.useContExit() );
    208                         newBody->get_kids().push_back( new NullStmt( labels ) );                       
     209                        newBody->get_kids().push_back( new NullStmt( labels ) );
    209210                }
    210211
    211212                if ( e.isBreakUsed() ) {
    212                         // break label goes after the loop -- it'll get set by the 
     213                        // break label goes after the loop -- it'll get set by the
    213214                        // outer mutator if we do this
    214                         set_breakLabel( e.useBreakExit() );                     
     215                        set_breakLabel( e.useBreakExit() );
    215216                }
    216217
     
    231232
    232233        Statement *MLEMutator::mutate( ChooseStmt *switchStmt ) {
    233                 return handleSwitchStmt( switchStmt );         
     234                return handleSwitchStmt( switchStmt );
    234235        }
    235236
  • src/ControlStruct/MLEMutator.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // MLEMutator.h -- 
     7// MLEMutator.h --
    88//
    99// Author           : Rodolfo G. Esteves
     
    2323#include "SynTree/SynTree.h"
    2424#include "SynTree/Mutator.h"
     25#include "SynTree/Label.h"
    2526
    2627#include "LabelGenerator.h"
     
    3839                Statement *mutate( BranchStmt *branchStmt ) throw ( SemanticError );
    3940
    40                 Statement *mutate( CaseStmt *caseStmt ); 
     41                Statement *mutate( CaseStmt *caseStmt );
    4142                Statement *mutate( SwitchStmt *switchStmt );
    4243                Statement *mutate( ChooseStmt *switchStmt );
     
    5556                        bool operator!=( const Statement *stmt ) { return ( loop != stmt ); }
    5657
    57                         bool operator==( const Entry &other ) { return ( loop == other.get_loop() ); }
     58                        bool operator==( const Entry &other ) { return ( loop == other.get_controlStructure() ); }
    5859
    59                         Statement *get_loop() const { return loop; }
     60                        Statement *get_controlStructure() const { return loop; }
    6061
    6162                        Label useContExit() { contUsed = true; return contExit; }
     
    7273
    7374                std::map< Label, Statement * > *targetTable;
    74                 std::list< Entry > enclosingBlocks, enclosingLoops, enclosingSwitches;
     75                std::list< Entry > enclosingControlStructures;
    7576                Label breakLabel;
    7677                LabelGenerator *generator;
     
    7980                Statement *handleLoopStmt( LoopClass *loopStmt );
    8081
    81                 template< typename SwitchClass > 
     82                template< typename SwitchClass >
    8283                Statement *handleSwitchStmt( SwitchClass *switchStmt );
    8384
  • src/ControlStruct/Mutate.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Mutate.cc -- 
     7// Mutate.cc --
    88//
    99// Author           : Rodolfo G. Esteves
     
    3939                ForExprMutator formut;
    4040
     41                // transform choose statements into switch statements
     42                ChooseMutator chmut;
     43
    4144                // normalizes label definitions and generates multi-level
    4245                // exit labels
    4346                LabelFixer lfix;
    44 
    45                 // transform choose statements into switch statements
    46                 ChooseMutator chmut;
    4747
    4848                // expand case ranges and turn fallthru into a null statement
     
    5353
    5454                mutateAll( translationUnit, formut );
     55                mutateAll( translationUnit, chmut );
    5556                acceptAll( translationUnit, lfix );
    56                 mutateAll( translationUnit, chmut );
    5757                mutateAll( translationUnit, ranges );
    5858                //mutateAll( translationUnit, exc );
  • src/GenPoly/Box.cc

    r1b5c81ed rf80e0218  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Feb  5 16:45:07 2016
    13 // Update Count     : 286
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri May 13 14:51:21 2016
     13// Update Count     : 295
    1414//
    1515
     
    133133                        Value *lookup( Key *key, const std::list< TypeExpr* >& params ) const {
    134134                                TypeList typeList( params );
    135                                
     135
    136136                                // scan scopes for matches to the key
    137137                                for ( typename InnerMap::const_iterator insts = instantiations.find( key ); insts != instantiations.end(); insts = instantiations.findNext( insts, key ) ) {
     
    160160                        virtual Declaration *mutate( UnionDecl *unionDecl );
    161161                };
    162                
     162
    163163                /// Replaces polymorphic return types with out-parameters, replaces calls to polymorphic functions with adapter calls as needed, and adds appropriate type variables to the function call
    164164                class Pass1 : public PolyMutator {
     
    197197                        void addInferredParams( ApplicationExpr *appExpr, FunctionType *functionType, std::list< Expression *>::iterator &arg, const TyVarMap &tyVars );
    198198                        /// Stores assignment operators from assertion list in local map of assignment operations
    199                         void findAssignOps( const std::list< TypeDecl *> &forall );
     199                        void findTypeOps( const std::list< TypeDecl *> &forall );
    200200                        void passAdapters( ApplicationExpr *appExpr, FunctionType *functionType, const TyVarMap &exprTyVars );
    201201                        FunctionDecl *makeAdapter( FunctionType *adaptee, FunctionType *realType, const std::string &mangleName, const TyVarMap &tyVars );
     
    205205                        ObjectDecl *makeTemporary( Type *type );
    206206
    207                         ScopedMap< std::string, DeclarationWithType *> assignOps;    ///< Currently known type variable assignment operators
     207                        ScopedMap< std::string, DeclarationWithType* > assignOps;    ///< Currently known type variable assignment operators
     208                        ScopedMap< std::string, DeclarationWithType* > ctorOps;      ///< Currently known type variable constructors
     209                        ScopedMap< std::string, DeclarationWithType* > copyOps;      ///< Currently known type variable copy constructors
     210                        ScopedMap< std::string, DeclarationWithType* > dtorOps;      ///< Currently known type variable destructors
    208211                        ResolvExpr::TypeMap< DeclarationWithType > scopedAssignOps;  ///< Currently known assignment operators
     212                        ResolvExpr::TypeMap< DeclarationWithType > scopedCtorOps;    ///< Currently known assignment operators
     213                        ResolvExpr::TypeMap< DeclarationWithType > scopedCopyOps;    ///< Currently known assignment operators
     214                        ResolvExpr::TypeMap< DeclarationWithType > scopedDtorOps;    ///< Currently known assignment operators
    209215                        ScopedMap< std::string, DeclarationWithType* > adapters;     ///< Set of adapter functions in the current scope
    210                        
     216
    211217                        DeclarationWithType *retval;
    212218                        bool useRetval;
     
    226232                        virtual Type *mutate( PointerType *pointerType );
    227233                        virtual Type *mutate( FunctionType *funcType );
    228                        
     234
    229235                  private:
    230236                        void addAdapters( FunctionType *functionType );
     
    297303                        /// Exits the type-variable scope
    298304                        void endTypeScope();
    299                        
     305
    300306                        ScopedSet< std::string > knownLayouts;          ///< Set of generic type layouts known in the current scope, indexed by sizeofName
    301307                        ScopedSet< std::string > knownOffsets;          ///< Set of non-generic types for which the offset array exists in the current scope, indexed by offsetofName
     
    351357                PolyGenericCalculator polyCalculator;
    352358                Pass3 pass3;
    353                
     359
    354360                layoutBuilder.mutateDeclarationList( translationUnit );
    355361                mutateTranslationUnit/*All*/( translationUnit, pass1 );
     
    370376                return functionDecl;
    371377        }
    372        
     378
    373379        /// Get a list of type declarations that will affect a layout function
    374380        std::list< TypeDecl* > takeOtypeOnly( std::list< TypeDecl* > &decls ) {
     
    380386                        }
    381387                }
    382                
     388
    383389                return otypeDecls;
    384390        }
     
    387393        void addOtypeParams( FunctionType *layoutFnType, std::list< TypeDecl* > &otypeParams ) {
    388394                BasicType sizeAlignType( Type::Qualifiers(), BasicType::LongUnsignedInt );
    389                
     395
    390396                for ( std::list< TypeDecl* >::const_iterator param = otypeParams.begin(); param != otypeParams.end(); ++param ) {
    391397                        TypeInstType paramType( Type::Qualifiers(), (*param)->get_name(), *param );
     
    444450                return makeCond( ifCond, ifExpr );
    445451        }
    446        
     452
    447453        /// adds an expression to a compound statement
    448454        void addExpr( CompoundStmt *stmts, Expression *expr ) {
     
    454460                stmts->get_kids().push_back( stmt );
    455461        }
    456        
     462
    457463        Declaration *LayoutFunctionBuilder::mutate( StructDecl *structDecl ) {
    458464                // do not generate layout function for "empty" tag structs
     
    467473                BasicType *sizeAlignType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
    468474                PointerType *sizeAlignOutType = new PointerType( Type::Qualifiers(), sizeAlignType );
    469                
     475
    470476                ObjectDecl *sizeParam = new ObjectDecl( sizeofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType, 0 );
    471477                layoutFnType->get_parameters().push_back( sizeParam );
     
    497503                                addStmt( layoutDecl->get_statements(), makeAlignTo( derefVar( sizeParam ), new AlignofExpr( memberType->clone() ) ) );
    498504                        }
    499                        
     505
    500506                        // place current size in the current offset index
    501                         addExpr( layoutDecl->get_statements(), makeOp( "?=?", makeOp( "?[?]", new VariableExpr( offsetParam ), new ConstantExpr( Constant::from( n_members ) ) ),
     507                        addExpr( layoutDecl->get_statements(), makeOp( "?=?", makeOp( "?[?]", new VariableExpr( offsetParam ), new ConstantExpr( Constant::from_ulong( n_members ) ) ),
    502508                                                                              derefVar( sizeParam ) ) );
    503509                        ++n_members;
     
    505511                        // add member size to current size
    506512                        addExpr( layoutDecl->get_statements(), makeOp( "?+=?", derefVar( sizeParam ), new SizeofExpr( memberType->clone() ) ) );
    507                        
     513
    508514                        // take max of member alignment and global alignment
    509515                        addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( alignParam ), new AlignofExpr( memberType->clone() ) ) );
     
    515521                return structDecl;
    516522        }
    517        
     523
    518524        Declaration *LayoutFunctionBuilder::mutate( UnionDecl *unionDecl ) {
    519525                // do not generate layout function for "empty" tag unions
    520526                if ( unionDecl->get_members().empty() ) return unionDecl;
    521                
     527
    522528                // get parameters that can change layout, exiting early if none
    523529                std::list< TypeDecl* > otypeParams = takeOtypeOnly( unionDecl->get_parameters() );
     
    528534                BasicType *sizeAlignType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
    529535                PointerType *sizeAlignOutType = new PointerType( Type::Qualifiers(), sizeAlignType );
    530                
     536
    531537                ObjectDecl *sizeParam = new ObjectDecl( sizeofName( unionDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType, 0 );
    532538                layoutFnType->get_parameters().push_back( sizeParam );
     
    545551                        assert( dwt );
    546552                        Type *memberType = dwt->get_type();
    547                        
     553
    548554                        // take max member size and global size
    549555                        addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( sizeParam ), new SizeofExpr( memberType->clone() ) ) );
    550                        
     556
    551557                        // take max of member alignment and global alignment
    552558                        addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( alignParam ), new AlignofExpr( memberType->clone() ) ) );
     
    558564                return unionDecl;
    559565        }
    560        
     566
    561567        ////////////////////////////////////////// Pass1 ////////////////////////////////////////////////////
    562568
     
    600606                Pass1::Pass1() : useRetval( false ), tempNamer( "_temp" ) {}
    601607
    602                 /// Returns T if the given declaration is (*?=?)(T *, T) for some TypeInstType T (return not checked, but maybe should be), NULL otherwise
    603                 TypeInstType *isTypeInstAssignment( DeclarationWithType *decl ) {
    604                         if ( decl->get_name() == "?=?" ) {
    605                                 if ( FunctionType *funType = getFunctionType( decl->get_type() ) ) {
    606                                         if ( funType->get_parameters().size() == 2 ) {
    607                                                 if ( PointerType *pointer = dynamic_cast< PointerType *>( funType->get_parameters().front()->get_type() ) ) {
    608                                                         if ( TypeInstType *refType = dynamic_cast< TypeInstType *>( pointer->get_base() ) ) {
    609                                                                 if ( TypeInstType *refType2 = dynamic_cast< TypeInstType *>( funType->get_parameters().back()->get_type() ) ) {
    610                                                                         if ( refType->get_name() == refType2->get_name() ) {
    611                                                                                 return refType;
    612                                                                         } // if
     608                /// Returns T if the given declaration is a function with parameter (T*) for some TypeInstType T, NULL otherwise
     609                TypeInstType *isTypeInstPtrFn( DeclarationWithType *decl ) {
     610                        if ( FunctionType *funType = getFunctionType( decl->get_type() ) ) {
     611                                if ( funType->get_parameters().size() == 1 ) {
     612                                        if ( PointerType *pointer = dynamic_cast< PointerType *>( funType->get_parameters().front()->get_type() ) ) {
     613                                                if ( TypeInstType *refType = dynamic_cast< TypeInstType *>( pointer->get_base() ) ) {
     614                                                        return refType;
     615                                                } // if
     616                                        } // if
     617                                } // if
     618                        } // if
     619                        return 0;
     620                }
     621               
     622                /// Returns T if the given declaration is a function with parameters (T*, T) for some TypeInstType T, NULL otherwise
     623                TypeInstType *isTypeInstPtrValFn( DeclarationWithType *decl ) {
     624                        if ( FunctionType *funType = getFunctionType( decl->get_type() ) ) {
     625                                if ( funType->get_parameters().size() == 2 ) {
     626                                        if ( PointerType *pointer = dynamic_cast< PointerType *>( funType->get_parameters().front()->get_type() ) ) {
     627                                                if ( TypeInstType *refType = dynamic_cast< TypeInstType *>( pointer->get_base() ) ) {
     628                                                        if ( TypeInstType *refType2 = dynamic_cast< TypeInstType *>( funType->get_parameters().back()->get_type() ) ) {
     629                                                                if ( refType->get_name() == refType2->get_name() ) {
     630                                                                        return refType;
    613631                                                                } // if
    614632                                                        } // if
     
    620638                }
    621639               
    622                 /// returns T if the given declaration is: (*?=?)(T *, T) for some type T (return not checked, but maybe should be), NULL otherwise
    623                 /// Only picks assignments where neither parameter is cv-qualified
    624                 Type *isAssignment( DeclarationWithType *decl ) {
    625                         if ( decl->get_name() == "?=?" ) {
    626                                 if ( FunctionType *funType = getFunctionType( decl->get_type() ) ) {
    627                                         if ( funType->get_parameters().size() == 2 ) {
    628                                                 Type::Qualifiers defaultQualifiers;
    629                                                 Type *paramType1 = funType->get_parameters().front()->get_type();
    630                                                 if ( paramType1->get_qualifiers() != defaultQualifiers ) return 0;
    631                                                 Type *paramType2 = funType->get_parameters().back()->get_type();
    632                                                 if ( paramType2->get_qualifiers() != defaultQualifiers ) return 0;
    633                                                
    634                                                 if ( PointerType *pointerType = dynamic_cast< PointerType* >( paramType1 ) ) {
    635                                                         Type *baseType1 = pointerType->get_base();
    636                                                         if ( baseType1->get_qualifiers() != defaultQualifiers ) return 0;
    637                                                         SymTab::Indexer dummy;
    638                                                         if ( ResolvExpr::typesCompatible( baseType1, paramType2, dummy ) ) {
    639                                                                 return baseType1;
    640                                                         } // if
     640                /// Returns T if the given declaration is (*?=?)(T *, T) for some TypeInstType T (return not checked, but maybe should be), NULL otherwise
     641                TypeInstType *isTypeInstAssignment( DeclarationWithType *decl ) {
     642                        return decl->get_name() == "?=?" ? isTypeInstPtrValFn( decl ) : 0;
     643                }
     644
     645                /// Returns T if the given declaration is (*?{})(T *) for some TypeInstType T (return not checked, but maybe should be), NULL otherwise
     646                TypeInstType *isTypeInstCtor( DeclarationWithType *decl ) {
     647                        return decl->get_name() == "?{}" ? isTypeInstPtrFn( decl ) : 0;
     648                }
     649
     650                /// Returns T if the given declaration is (*?{})(T *, T) for some TypeInstType T (return not checked, but maybe should be), NULL otherwise
     651                TypeInstType *isTypeInstCopy( DeclarationWithType *decl ) {
     652                        return decl->get_name() == "?{}" ? isTypeInstPtrValFn( decl ) : 0;
     653                }
     654
     655                /// Returns T if the given declaration is (*^?{})(T *) for some TypeInstType T (return not checked, but maybe should be), NULL otherwise
     656                TypeInstType *isTypeInstDtor( DeclarationWithType *decl ) {
     657                        return decl->get_name() == "^?{}" ? isTypeInstPtrFn( decl ) : 0;
     658                }
     659
     660                /// Returns T if the given declaration is a function with parameters (T*, T) for some type T, where neither parameter is cv-qualified,
     661                /// NULL otherwise
     662                Type *isNoCvPtrFn( DeclarationWithType *decl ) {
     663                        if ( FunctionType *funType = getFunctionType( decl->get_type() ) ) {
     664                                if ( funType->get_parameters().size() == 1 ) {
     665                                        Type::Qualifiers defaultQualifiers;
     666                                        Type *paramType = funType->get_parameters().front()->get_type();
     667                                        if ( paramType->get_qualifiers() != defaultQualifiers ) return 0;
     668
     669                                        if ( PointerType *pointerType = dynamic_cast< PointerType* >( paramType ) ) {
     670                                                Type *baseType = pointerType->get_base();
     671                                                if ( baseType->get_qualifiers() == defaultQualifiers ) {
     672                                                        return baseType;
    641673                                                } // if
    642674                                        } // if
     
    645677                        return 0;
    646678                }
    647 
    648                 void Pass1::findAssignOps( const std::list< TypeDecl *> &forall ) {
     679               
     680                /// Returns T if the given declaration is a function with parameters (T*, T) for some type T, where neither parameter is cv-qualified,
     681                /// NULL otherwise
     682                Type *isNoCvPtrValFn( DeclarationWithType *decl ) {
     683                        if ( FunctionType *funType = getFunctionType( decl->get_type() ) ) {
     684                                if ( funType->get_parameters().size() == 2 ) {
     685                                        Type::Qualifiers defaultQualifiers;
     686                                        Type *paramType1 = funType->get_parameters().front()->get_type();
     687                                        if ( paramType1->get_qualifiers() != defaultQualifiers ) return 0;
     688                                        Type *paramType2 = funType->get_parameters().back()->get_type();
     689                                        if ( paramType2->get_qualifiers() != defaultQualifiers ) return 0;
     690
     691                                        if ( PointerType *pointerType = dynamic_cast< PointerType* >( paramType1 ) ) {
     692                                                Type *baseType1 = pointerType->get_base();
     693                                                if ( baseType1->get_qualifiers() != defaultQualifiers ) return 0;
     694                                                SymTab::Indexer dummy;
     695                                                if ( ResolvExpr::typesCompatible( baseType1, paramType2, dummy ) ) {
     696                                                        return baseType1;
     697                                                } // if
     698                                        } // if
     699                                } // if
     700                        } // if
     701                        return 0;
     702                }
     703
     704                /// returns T if the given declaration is: (*?=?)(T *, T) for some type T (return not checked, but maybe should be), NULL otherwise
     705                /// Only picks assignments where neither parameter is cv-qualified
     706                Type *isAssignment( DeclarationWithType *decl ) {
     707                        return decl->get_name() == "?=?" ? isNoCvPtrValFn( decl ) : 0;
     708                }
     709
     710                /// returns T if the given declaration is: (*?{})(T *) for some type T, NULL otherwise
     711                /// Only picks ctors where the parameter is not cv-qualified
     712                Type *isCtor( DeclarationWithType *decl ) {
     713                        return decl->get_name() == "?{}" ? isNoCvPtrFn( decl ) : 0;
     714                }
     715
     716                /// returns T if the given declaration is: (*?{})(T *, T) for some type T (return not checked, but maybe should be), NULL otherwise
     717                /// Only picks copy constructors where neither parameter is cv-qualified
     718                Type *isCopy( DeclarationWithType *decl ) {
     719                        return decl->get_name() == "?{}" ? isNoCvPtrValFn( decl ) : 0;
     720                }
     721
     722                /// returns T if the given declaration is: (*?{})(T *) for some type T, NULL otherwise
     723                /// Only picks ctors where the parameter is not cv-qualified
     724                Type *isDtor( DeclarationWithType *decl ) {
     725                        return decl->get_name() == "^?{}" ? isNoCvPtrFn( decl ) : 0;
     726                }
     727
     728                void Pass1::findTypeOps( const std::list< TypeDecl *> &forall ) {
    649729                        // what if a nested function uses an assignment operator?
    650730                        // assignOps.clear();
     
    654734                                        if ( TypeInstType *typeInst = isTypeInstAssignment( *assert ) ) {
    655735                                                assignOps[ typeInst->get_name() ] = *assert;
     736                                        } else if ( TypeInstType *typeInst = isTypeInstCtor( *assert ) ) {
     737                                                ctorOps[ typeInst->get_name() ] = *assert;
     738                                        } else if ( TypeInstType *typeInst = isTypeInstCopy( *assert ) ) {
     739                                                copyOps[ typeInst->get_name() ] = *assert;
     740                                        } else if ( TypeInstType *typeInst = isTypeInstDtor( *assert ) ) {
     741                                                dtorOps[ typeInst->get_name() ] = *assert;
    656742                                        } // if
    657743                                } // for
     
    661747                DeclarationWithType *Pass1::mutate( FunctionDecl *functionDecl ) {
    662748                        // if this is a assignment function, put it in the map for this scope
    663                         if ( Type *assignedType = isAssignment( functionDecl ) ) {
    664                                 if ( ! dynamic_cast< TypeInstType* >( assignedType ) ) {
    665                                         scopedAssignOps.insert( assignedType, functionDecl );
     749                        if ( Type *paramType = isAssignment( functionDecl ) ) {
     750                                if ( ! dynamic_cast< TypeInstType* >( paramType ) ) {
     751                                        scopedAssignOps.insert( paramType, functionDecl );
     752                                }
     753                        } else if ( Type *paramType = isCtor( functionDecl ) ) {
     754                                if ( ! dynamic_cast< TypeInstType* >( paramType ) ) {
     755                                        scopedCtorOps.insert( paramType, functionDecl );
     756                                }
     757                        } else if ( Type *paramType = isCopy( functionDecl ) ) {
     758                                if ( ! dynamic_cast< TypeInstType* >( paramType ) ) {
     759                                        scopedCopyOps.insert( paramType, functionDecl );
     760                                }
     761                        } else if ( Type *paramType = isDtor( functionDecl ) ) {
     762                                if ( ! dynamic_cast< TypeInstType* >( paramType ) ) {
     763                                        scopedDtorOps.insert( paramType, functionDecl );
    666764                                }
    667765                        }
     
    671769                                scopeTyVars.beginScope();
    672770                                assignOps.beginScope();
     771                                ctorOps.beginScope();
     772                                copyOps.beginScope();
     773                                dtorOps.beginScope();
     774                               
    673775                                DeclarationWithType *oldRetval = retval;
    674776                                bool oldUseRetval = useRetval;
     
    688790                                FunctionType *functionType = functionDecl->get_functionType();
    689791                                makeTyVarMap( functionDecl->get_functionType(), scopeTyVars );
    690                                 findAssignOps( functionDecl->get_functionType()->get_forall() );
     792                                findTypeOps( functionDecl->get_functionType()->get_forall() );
    691793
    692794                                std::list< DeclarationWithType *> &paramList = functionType->get_parameters();
     
    713815                                scopeTyVars.endScope();
    714816                                assignOps.endScope();
     817                                ctorOps.endScope();
     818                                copyOps.endScope();
     819                                dtorOps.endScope();
    715820                                retval = oldRetval;
    716821                                useRetval = oldUseRetval;
     
    784889                                                arg++;
    785890                                        } else {
    786                                                 throw SemanticError( "unbound type variable in application ", appExpr );
     891                                                /// xxx - should this be an assertion?
     892                                                throw SemanticError( "unbound type variable: " + tyParm->first + " in application ", appExpr );
    787893                                        } // if
    788894                                } // if
     
    803909                                passArgTypeVars( appExpr, polyRetType, concRetType, arg, exprTyVars, seenTypes );
    804910                        }
    805                        
     911
    806912                        // add type information args for presently unseen types in parameter list
    807913                        for ( ; fnParm != funcType->get_parameters().end() && fnArg != appExpr->get_args().end(); ++fnParm, ++fnArg ) {
     
    882988                        assert( env );
    883989                        Type *concrete = replaceWithConcrete( appExpr, polyType );
    884                         // add out-parameter for return value   
     990                        // add out-parameter for return value
    885991                        return addRetParam( appExpr, function, concrete, arg );
    886992                }
     
    9101016                                } else if ( arg->get_results().front()->get_isLvalue() ) {
    9111017                                        // VariableExpr and MemberExpr are lvalues; need to check this isn't coming from the second arg of a comma expression though (not an lvalue)
     1018                                        // xxx - need to test that this code is still reachable
    9121019                                        if ( CommaExpr *commaArg = dynamic_cast< CommaExpr* >( arg ) ) {
    9131020                                                commaArg->set_arg2( new AddressExpr( commaArg->get_arg2() ) );
     
    10351142                        std::list< DeclarationWithType *>::iterator param = adapterType->get_parameters().begin();
    10361143                        std::list< DeclarationWithType *>::iterator realParam = adaptee->get_parameters().begin();
    1037                         param++;                // skip adaptee parameter
     1144                        param++;                // skip adaptee parameter in the adapter type
    10381145                        if ( realType->get_returnVals().empty() ) {
     1146                                // void return
    10391147                                addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars );
    10401148                                bodyStmt = new ExprStmt( noLabels, adapteeApp );
    10411149                        } else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
     1150                                // return type T
    10421151                                if ( (*param)->get_name() == "" ) {
    10431152                                        (*param)->set_name( "_ret" );
     
    12911400                        } else if ( needsAdapter( function, scopeTyVars ) ) {
    12921401                                // std::cerr << "needs adapter: ";
    1293                                 // for ( TyVarMap::iterator i = scopeTyVars.begin(); i != scopeTyVars.end(); ++i ) {
    1294                                 //      std::cerr << i->first << " ";
    1295                                 // }
    1296                                 // std::cerr << "\n";
     1402                                // printTyVarMap( std::cerr, scopeTyVars );
     1403                                // std::cerr << *env << std::endl;
    12971404                                // change the application so it calls the adapter rather than the passed function
    12981405                                ret = applyAdapter( appExpr, function, arg, scopeTyVars );
     
    13451452                                } // if
    13461453                        } // if
     1454                        // isPolyType check needs to happen before mutating addrExpr arg, so pull it forward
     1455                        // out of the if condition.
     1456                        bool polytype = isPolyType( addrExpr->get_arg()->get_results().front(), scopeTyVars, env );
    13471457                        addrExpr->set_arg( mutateExpression( addrExpr->get_arg() ) );
    1348                         if ( isPolyType( addrExpr->get_arg()->get_results().front(), scopeTyVars, env ) || needs ) {
     1458                        if ( polytype || needs ) {
    13491459                                Expression *ret = addrExpr->get_arg();
    13501460                                delete ret->get_results().front();
     
    13651475                        functionObj->set_mangleName( functionDecl->get_mangleName() );
    13661476                        return new VariableExpr( functionObj );
     1477                }
     1478
     1479                /// Finds the operation declaration for a given type in one of the two maps
     1480                DeclarationWithType* findOpForType( Type *formalType, const ScopedMap< std::string, DeclarationWithType* >& ops, ResolvExpr::TypeMap< DeclarationWithType >& scopedOps ) {
     1481                        if ( TypeInstType *formalTypeInstType = dynamic_cast< TypeInstType* >( formalType ) ) {
     1482                                ScopedMap< std::string, DeclarationWithType *>::const_iterator opIt = ops.find( formalTypeInstType->get_name() );
     1483                                return opIt == ops.end() ? 0 : opIt->second;
     1484                        } else {
     1485                                return scopedOps.find( formalType );
     1486                        }
     1487                }
     1488
     1489                /// Adds an assertion parameter to the application expression for the actual assertion declaration valued with the assert op
     1490                void addAssertionFor( ApplicationExpr *appExpr, DeclarationWithType *actualDecl, DeclarationWithType *assertOp ) {
     1491                        appExpr->get_inferParams()[ actualDecl->get_uniqueId() ]
     1492                                        = ParamEntry( assertOp->get_uniqueId(), assertOp->get_type()->clone(), actualDecl->get_type()->clone(), wrapFunctionDecl( assertOp ) );
    13671493                }
    13681494               
     
    14131539                                                assignExpr->get_env()->add( (*forallIt)->get_name(), formalType );
    14141540
    1415                                                 // skip types with no assign op (ftype/dtype)
     1541                                                // skip non-otype parameters (ftype/dtype)
    14161542                                                if ( (*forallIt)->get_kind() != TypeDecl::Any ) continue;
    14171543
    1418                                                 // find assignment operator for formal type
    1419                                                 DeclarationWithType *assertAssign = 0;
    1420                                                 if ( TypeInstType *formalTypeInstType = dynamic_cast< TypeInstType* >( formalType ) ) {
    1421                                                         ScopedMap< std::string, DeclarationWithType *>::const_iterator assertAssignIt = assignOps.find( formalTypeInstType->get_name() );
    1422                                                         if ( assertAssignIt == assignOps.end() ) {
    1423                                                                 throw SemanticError( "No assignment operation found for ", formalTypeInstType );
    1424                                                         }
    1425                                                         assertAssign = assertAssignIt->second;
    1426                                                 } else {
    1427                                                         assertAssign = scopedAssignOps.find( formalType );
    1428                                                         if ( ! assertAssign ) {
    1429                                                                 throw SemanticError( "No assignment operation found for ", formalType );
    1430                                                         }
    1431                                                 }
    1432 
    1433                                                 // add inferred parameter for field assignment operator to assignment expression
     1544                                                // find otype operators for formal type
     1545                                                DeclarationWithType *assertAssign = findOpForType( formalType, assignOps, scopedAssignOps );
     1546                                                if ( ! assertAssign ) throw SemanticError( "No assignment operation found for ", formalType );
     1547
     1548                                                DeclarationWithType *assertCtor = findOpForType( formalType, ctorOps, scopedCtorOps );
     1549                                                if ( ! assertCtor ) throw SemanticError( "No default constructor found for ", formalType );
     1550
     1551                                                DeclarationWithType *assertCopy = findOpForType( formalType, copyOps, scopedCopyOps );
     1552                                                if ( ! assertCopy ) throw SemanticError( "No copy constructor found for ", formalType );
     1553
     1554                                                DeclarationWithType *assertDtor = findOpForType( formalType, dtorOps, scopedDtorOps );
     1555                                                if ( ! assertDtor ) throw SemanticError( "No destructor found for ", formalType );
     1556                                               
     1557                                                // add inferred parameters for otype operators to assignment expression
     1558                                                // NOTE: Code here assumes that first four assertions are assign op, ctor, copy ctor, dtor, in that order
    14341559                                                std::list< DeclarationWithType* > &asserts = (*forallIt)->get_assertions();
    1435                                                 assert( ! asserts.empty() && "Type param needs assignment operator assertion" );
    1436                                                 DeclarationWithType *actualDecl = asserts.front();
    1437                                                 assignExpr->get_inferParams()[ actualDecl->get_uniqueId() ]
    1438                                                         = ParamEntry( assertAssign->get_uniqueId(), assertAssign->get_type()->clone(), actualDecl->get_type()->clone(), wrapFunctionDecl( assertAssign ) );
     1560                                                assert( asserts.size() >= 4 && "Type param needs otype operator assertions" );
     1561
     1562                                                std::list< DeclarationWithType* >::iterator actualIt = asserts.begin();
     1563                                                addAssertionFor( assignExpr, *actualIt, assertAssign );
     1564                                                ++actualIt;
     1565                                                addAssertionFor( assignExpr, *actualIt, assertCtor );
     1566                                                ++actualIt;
     1567                                                addAssertionFor( assignExpr, *actualIt, assertCopy );
     1568                                                ++actualIt;
     1569                                                addAssertionFor( assignExpr, *actualIt, assertDtor );
     1570                                               
     1571                                                //DeclarationWithType *actualDecl = asserts.front();
     1572                                                //assignExpr->get_inferParams()[ actualDecl->get_uniqueId() ]
     1573                                                //      = ParamEntry( assertAssign->get_uniqueId(), assertAssign->get_type()->clone(), actualDecl->get_type()->clone(), wrapFunctionDecl( assertAssign ) );
    14391574                                        }
    14401575                                }
     
    14821617                        adapters.beginScope();
    14831618                        scopedAssignOps.beginScope();
     1619                        scopedCtorOps.beginScope();
     1620                        scopedCopyOps.beginScope();
     1621                        scopedDtorOps.beginScope();
    14841622                }
    14851623
     
    14871625                        adapters.endScope();
    14881626                        scopedAssignOps.endScope();
     1627                        scopedCtorOps.endScope();
     1628                        scopedCopyOps.endScope();
     1629                        scopedDtorOps.endScope();
    14891630                }
    14901631
     
    18862027                                }
    18872028                        }
    1888                        
     2029
    18892030                        Type *ret = Mutator::mutate( funcType );
    18902031
     
    19052046
    19062047                                        std::list<Expression*> designators;
    1907                                         objectDecl->set_init( new SingleInit( alloc, designators ) );
     2048                                        objectDecl->set_init( new SingleInit( alloc, designators, false ) ); // not constructed
    19082049                                }
    19092050                        }
     
    19422083                                UntypedExpr *derefExpr = new UntypedExpr( new NameExpr( "*?" ) );
    19432084                                derefExpr->get_args().push_back( derefdVar );
     2085                                // xxx - should set results on derefExpr
    19442086                                derefdVar = derefExpr;
    19452087                        }
    19462088                        return derefdVar;
    19472089                }
    1948                
     2090
    19492091                Expression *PolyGenericCalculator::mutate( MemberExpr *memberExpr ) {
    19502092                        // mutate, exiting early if no longer MemberExpr
     
    20382180
    20392181                bool PolyGenericCalculator::findGeneric( Type *ty ) {
     2182                        ty = replaceTypeInst( ty, env );
     2183                       
    20402184                        if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( ty ) ) {
    2041                                 // duplicate logic from isPolyType()
    2042                                 if ( env ) {
    2043                                         if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
    2044                                                 return findGeneric( newType );
    2045                                         } // if
    2046                                 } // if
    20472185                                if ( scopeTyVars.find( typeInst->get_name() ) != scopeTyVars.end() ) {
    20482186                                        // NOTE assumes here that getting put in the scopeTyVars included having the layout variables set
     
    20662204                                if ( n_members == 0 ) {
    20672205                                        // all empty structs have the same layout - size 1, align 1
    2068                                         makeVar( sizeofName( typeName ), layoutType, new SingleInit( new ConstantExpr( Constant::from( (unsigned long)1 ) ) ) );
    2069                                         makeVar( alignofName( typeName ), layoutType->clone(), new SingleInit( new ConstantExpr( Constant::from( (unsigned long)1 ) ) ) );
     2206                                        makeVar( sizeofName( typeName ), layoutType, new SingleInit( new ConstantExpr( Constant::from_ulong( (unsigned long)1 ) ) ) );
     2207                                        makeVar( alignofName( typeName ), layoutType->clone(), new SingleInit( new ConstantExpr( Constant::from_ulong( (unsigned long)1 ) ) ) );
    20702208                                        // NOTE zero-length arrays are forbidden in C, so empty structs have no offsetof array
    20712209                                } else {
    20722210                                        ObjectDecl *sizeVar = makeVar( sizeofName( typeName ), layoutType );
    20732211                                        ObjectDecl *alignVar = makeVar( alignofName( typeName ), layoutType->clone() );
    2074                                         ObjectDecl *offsetVar = makeVar( offsetofName( typeName ), new ArrayType( Type::Qualifiers(), layoutType->clone(), new ConstantExpr( Constant::from( n_members ) ), false, false ) );
     2212                                        ObjectDecl *offsetVar = makeVar( offsetofName( typeName ), new ArrayType( Type::Qualifiers(), layoutType->clone(), new ConstantExpr( Constant::from_int( n_members ) ), false, false ) );
    20752213
    20762214                                        // generate call to layout function
     
    21442282                        Type *ty = offsetofExpr->get_type();
    21452283                        if ( ! findGeneric( ty ) ) return offsetofExpr;
    2146                        
     2284
    21472285                        if ( StructInstType *structType = dynamic_cast< StructInstType* >( ty ) ) {
    21482286                                // replace offsetof expression by index into offset array
     
    21912329
    21922330                                        // build the offset array and replace the pack with a reference to it
    2193                                         ObjectDecl *offsetArray = makeVar( offsetName, new ArrayType( Type::Qualifiers(), offsetType, new ConstantExpr( Constant::from( baseMembers.size() ) ), false, false ),
     2331                                        ObjectDecl *offsetArray = makeVar( offsetName, new ArrayType( Type::Qualifiers(), offsetType, new ConstantExpr( Constant::from_ulong( baseMembers.size() ) ), false, false ),
    21942332                                                        new ListInit( inits ) );
    21952333                                        ret = new VariableExpr( offsetArray );
  • src/GenPoly/CopyParams.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // CopyParams.cc -- 
     7// CopyParams.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
     11// Last Modified By : Rob Schluntz
    1212// Last Modified On : Tue May 19 07:33:31 2015
    1313// Update Count     : 1
     
    2929          public:
    3030                CopyParams();
    31  
     31
    3232                virtual void visit( FunctionDecl *funcDecl );
    3333                virtual void visit( AddressExpr *addrExpr );
     
    5050                if ( funcDecl->get_statements() ) {
    5151                        funcDecl->get_statements()->accept( *this );
    52        
     52
    5353                        if ( ! modVars.empty() ) {
    5454                                std::map< std::string, DeclarationWithType* > assignOps;
     
    5757                                        if ( (*tyVar)->get_kind() == TypeDecl::Any ) {
    5858                                                assert( !(*tyVar)->get_assertions().empty() );
     59                                                assert( (*tyVar)->get_assertions().front()->get_name() == "?=?" );
    5960                                                assignOps[ (*tyVar)->get_name() ] = (*tyVar)->get_assertions().front();
    6061                                        } // if
  • src/GenPoly/GenPoly.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // GenPoly.cc -- 
     7// GenPoly.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 15 16:11:18 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed May 25 13:39:21 2016
    1313// Update Count     : 13
    1414//
     
    6666        }
    6767
     68        Type* replaceTypeInst( Type* type, const TypeSubstitution* env ) {
     69                if ( ! env ) return type;
     70                if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( type ) ) {
     71                        Type *newType = env->lookup( typeInst->get_name() );
     72                        if ( newType ) return newType;
     73                }
     74                return type;
     75        }
     76
    6877        Type *isPolyType( Type *type, const TypeSubstitution *env ) {
     78                type = replaceTypeInst( type, env );
     79
    6980                if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( type ) ) {
    70                         if ( env ) {
    71                                 if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
    72                                         return isPolyType( newType, env );
    73                                 } // if
    74                         } // if
    7581                        return type;
    7682                } else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {
     
    8187                return 0;
    8288        }
    83        
     89
    8490        Type *isPolyType( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env ) {
     91                type = replaceTypeInst( type, env );
     92
    8593                if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( type ) ) {
    86                         if ( env ) {
    87                                 if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
    88                                         return isPolyType( newType, tyVars, env );
    89                                 } // if
    90                         } // if
    9194                        if ( tyVars.find( typeInst->get_name() ) != tyVars.end() ) {
    9295                                return type;
     
    101104
    102105        Type *isPolyPtr( Type *type, const TypeSubstitution *env ) {
     106                type = replaceTypeInst( type, env );
     107
    103108                if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
    104109                        return isPolyType( ptr->get_base(), env );
    105                 } else if ( env ) {
    106                         if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
    107                                 if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
    108                                         return isPolyPtr( newType, env );
    109                                 } // if
    110                         } // if
    111                 } // if
    112                 return 0;
    113         }
    114        
     110                }
     111                return 0;
     112        }
     113
    115114        Type *isPolyPtr( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env ) {
     115                type = replaceTypeInst( type, env );
     116
    116117                if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
    117118                        return isPolyType( ptr->get_base(), tyVars, env );
    118                 } else if ( env ) {
    119                         if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
    120                                 if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
    121                                         return isPolyPtr( newType, tyVars, env );
    122                                 } // if
    123                         } // if
    124                 } // if
     119                }
    125120                return 0;
    126121        }
     
    132127
    133128                while ( true ) {
     129                        type = replaceTypeInst( type, env );
     130
    134131                        if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
    135132                                type = ptr->get_base();
    136133                                ++(*levels);
    137                         } else if ( env ) {
    138                                 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
    139                                         if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
    140                                                 type = newType;
    141                                         } else break;
    142                                 } else break;
    143134                        } else break;
    144135                }
     
    146137                return isPolyType( type, env );
    147138        }
    148        
     139
    149140        Type * hasPolyBase( Type *type, const TyVarMap &tyVars, int *levels, const TypeSubstitution *env ) {
    150141                int dummy;
     
    153144
    154145                while ( true ) {
     146                        type = replaceTypeInst( type, env );
     147
    155148                        if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
    156149                                type = ptr->get_base();
    157150                                ++(*levels);
    158                         } else if ( env ) {
    159                                 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
    160                                         if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
    161                                                 type = newType;
    162                                         } else break;
    163                                 } else break;
    164151                        } else break;
    165152                }
     
    185172                        if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( expr ) ) {
    186173                                return varExpr;
     174                        } else if ( MemberExpr *memberExpr = dynamic_cast< MemberExpr* >( expr ) ) {
     175                                expr = memberExpr->get_aggregate();
    187176                        } else if ( AddressExpr *addressExpr = dynamic_cast< AddressExpr* >( expr ) ) {
    188177                                expr = addressExpr->get_arg();
     
    192181                                if ( ! fn || fn->get_name() != std::string("*?") ) return 0;
    193182                                expr = *untypedExpr->begin_args();
     183                        } else if ( CommaExpr *commaExpr = dynamic_cast< CommaExpr* >( expr ) ) {
     184                                // copy constructors insert comma exprs, look at second argument which contains the variable
     185                                expr = commaExpr->get_arg2();
     186                                continue;
    194187                        } else break;
    195188
     
    209202                }
    210203        }
    211        
     204
    212205        void printTyVarMap( std::ostream &os, const TyVarMap &tyVarMap ) {
    213206                for ( TyVarMap::const_iterator i = tyVarMap.begin(); i != tyVarMap.end(); ++i ) {
  • src/GenPoly/GenPoly.h

    r1b5c81ed rf80e0218  
    3131namespace GenPoly {
    3232        typedef ErasableScopedMap< std::string, TypeDecl::Kind > TyVarMap;
    33 
     33       
    3434        /// A function needs an adapter if it returns a polymorphic value or if any of its
    3535        /// parameters have polymorphic type
     
    3939        ReferenceToType *isPolyRet( FunctionType *function );
    4040
     41        /// Replaces a TypeInstType by its referrent in the environment, if applicable
     42        Type* replaceTypeInst( Type* type, const TypeSubstitution* env );
     43       
    4144        /// returns polymorphic type if is polymorphic type, NULL otherwise; will look up substitution in env if provided
    4245        Type *isPolyType( Type *type, const TypeSubstitution *env = 0 );
  • src/GenPoly/PolyMutator.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // PolyMutator.cc -- 
     7// PolyMutator.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri Aug 14 15:28:50 2015
     12// Last Modified On : Mon May 02 14:50:58 2016
    1313// Update Count     : 11
    1414//
     
    6363                                env = expr->get_env();
    6464                        }
     65                        // xxx - should env be cloned (or moved) onto the result of the mutate?
    6566                        return expr->acceptMutator( *this );
    6667                } else {
     
    144145                return untypedExpr;
    145146        }
    146  
    147  
     147
     148
    148149        Initializer *PolyMutator::mutate( SingleInit *singleInit ) {
    149150                singleInit->set_value( mutateExpression( singleInit->get_value() ) );
  • src/GenPoly/ScopedMap.h

    r1b5c81ed rf80e0218  
    9090                                return next_valid();
    9191                        }
    92                         iterator& operator++ (int) { iterator tmp = *this; ++(*this); return tmp; }
     92                        iterator operator++ (int) { iterator tmp = *this; ++(*this); return tmp; }
    9393
    9494                        iterator& operator-- () {
     
    101101                                return prev_valid();
    102102                        }
    103                         iterator& operator-- (int) { iterator tmp = *this; --(*this); return tmp; }
     103                        iterator operator-- (int) { iterator tmp = *this; --(*this); return tmp; }
    104104
    105105                        bool operator== (const iterator &that) {
     
    166166                                return next_valid();
    167167                        }
    168                         const_iterator& operator++ (int) { const_iterator tmp = *this; ++(*this); return tmp; }
     168                        const_iterator operator++ (int) { const_iterator tmp = *this; ++(*this); return tmp; }
    169169
    170170                        const_iterator& operator-- () {
     
    177177                                return prev_valid();
    178178                        }
    179                         const_iterator& operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; }
     179                        const_iterator operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; }
    180180
    181181                        bool operator== (const const_iterator &that) {
  • src/GenPoly/ScopedSet.h

    r1b5c81ed rf80e0218  
    8787                                return next_valid();
    8888                        }
    89                         iterator& operator++ (int) { iterator tmp = *this; ++(*this); return tmp; }
     89                        iterator operator++ (int) { iterator tmp = *this; ++(*this); return tmp; }
    9090
    9191                        iterator& operator-- () {
     
    9898                                return prev_valid();
    9999                        }
    100                         iterator& operator-- (int) { iterator tmp = *this; --(*this); return tmp; }
     100                        iterator operator-- (int) { iterator tmp = *this; --(*this); return tmp; }
    101101
    102102                        bool operator== (const iterator &that) {
     
    163163                                return next_valid();
    164164                        }
    165                         const_iterator& operator++ (int) { const_iterator tmp = *this; ++(*this); return tmp; }
     165                        const_iterator operator++ (int) { const_iterator tmp = *this; ++(*this); return tmp; }
    166166
    167167                        const_iterator& operator-- () {
     
    174174                                return prev_valid();
    175175                        }
    176                         const_iterator& operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; }
     176                        const_iterator operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; }
    177177
    178178                        bool operator== (const const_iterator &that) {
  • src/GenPoly/Specialize.cc

    r1b5c81ed rf80e0218  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jan 20 12:40:33 2016
    13 // Update Count     : 18
     12// Last Modified On : Thu Apr 28 15:17:45 2016
     13// Update Count     : 24
    1414//
    1515
     
    2525#include "SynTree/Statement.h"
    2626#include "SynTree/Type.h"
     27#include "SynTree/Attribute.h"
    2728#include "SynTree/TypeSubstitution.h"
    2829#include "SynTree/Mutator.h"
     
    4142                virtual Expression * mutate( AddressExpr *castExpr );
    4243                virtual Expression * mutate( CastExpr *castExpr );
    43                 virtual Expression * mutate( LogicalExpr *logicalExpr );
    44                 virtual Expression * mutate( ConditionalExpr *conditionalExpr );
    45                 virtual Expression * mutate( CommaExpr *commaExpr );
     44                // virtual Expression * mutate( LogicalExpr *logicalExpr );
     45                // virtual Expression * mutate( ConditionalExpr *conditionalExpr );
     46                // virtual Expression * mutate( CommaExpr *commaExpr );
    4647
    4748          private:
     
    9899                } // if
    99100                // create new thunk with same signature as formal type (C linkage, empty body)
    100                 FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false, false );
     101                FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( noLabels ), false, false );
    101102                thunkFunc->fixUniqueId();
     103
     104                // thunks may be generated and not used - silence warning with attribute
     105                thunkFunc->get_attributes().push_back( new Attribute( "unused" ) );
    102106
    103107                // thread thunk parameters into call to actual function, naming thunk parameters as we go
     
    142146
    143147        Expression * Specialize::doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams ) {
    144                 assert( ! actual->get_results().empty() );
     148                assert( ! actual->get_results().empty() ); // using front, should have this assert
    145149                if ( needsSpecialization( formalType, actual->get_results().front(), env ) ) {
    146150                        FunctionType *funType;
     
    212216        }
    213217
    214         Expression * Specialize::mutate( LogicalExpr *logicalExpr ) {
    215                 return logicalExpr;
    216         }
    217 
    218         Expression * Specialize::mutate( ConditionalExpr *condExpr ) {
    219                 return condExpr;
    220         }
    221 
    222         Expression * Specialize::mutate( CommaExpr *commaExpr ) {
    223                 return commaExpr;
    224         }
     218        // Removing these for now. Richard put these in for some reason, but it's not clear why.
     219        // In particular, copy constructors produce a comma expression, and with this code the parts
     220        // of that comma expression are not specialized, which causes problems.
     221
     222        // Expression * Specialize::mutate( LogicalExpr *logicalExpr ) {
     223        //      return logicalExpr;
     224        // }
     225
     226        // Expression * Specialize::mutate( ConditionalExpr *condExpr ) {
     227        //      return condExpr;
     228        // }
     229
     230        // Expression * Specialize::mutate( CommaExpr *commaExpr ) {
     231        //      return commaExpr;
     232        // }
    225233} // namespace GenPoly
    226234
  • src/InitTweak/InitModel.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // InitModel.cc -- 
     7// InitModel.cc --
    88//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 16:37:08 2015
    13 // Update Count     : 1
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Jan 07 13:38:46 2016
     13// Update Count     : 5
    1414//
    1515
     
    198198                assert(init == 0 && single != 0);
    199199                std::list< Expression * > empty;
    200                 init = new SingleInit( single->get_expr(), empty );
     200                init = new SingleInit( single->get_expr(), empty, false ); // cannot be constructed
    201201                return;
    202202        }
     
    214214                        } // if
    215215
    216                 init = new ListInit( contents );
     216                std::list< Expression * > desig;
     217                init = new ListInit( contents, desig, false ); // cannot be constructed
    217218                return;
    218219        }
  • src/InitTweak/module.mk

    r1b5c81ed rf80e0218  
    1111## Created On       : Mon Jun  1 17:49:17 2015
    1212## Last Modified By : Rob Schluntz
    13 ## Last Modified On : Mon Jan 11 14:40:16 2016
    14 ## Update Count     : 2
     13## Last Modified On : Fri May 13 11:36:24 2016
     14## Update Count     : 3
    1515###############################################################################
    1616
    17 SRC += InitTweak/RemoveInit.cc
     17SRC += InitTweak/GenInit.cc \
     18        InitTweak/FixInit.cc \
     19        InitTweak/FixGlobalInit.cc \
     20        InitTweak/InitTweak.cc
    1821
  • src/MakeLibCfa.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // MakeLibCfa.cc -- 
     7// MakeLibCfa.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 10:33:33 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 26 16:52:59 2015
    13 // Update Count     : 14
    14 // 
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri Apr 22 13:54:15 2016
     13// Update Count     : 40
     14//
    1515
    1616#include "MakeLibCfa.h"
     
    2929                void visit( FunctionDecl* funcDecl );
    3030                void visit( ObjectDecl* objDecl );
    31  
     31
    3232                std::list< Declaration* > &get_newDecls() { return newDecls; }
    3333          private:
     
    4343        void MakeLibCfa::visit( FunctionDecl* origFuncDecl ) {
    4444                if ( origFuncDecl->get_linkage() != LinkageSpec::Intrinsic ) return;
    45  
     45                if ( origFuncDecl->get_statements() ) return;
     46
    4647                FunctionDecl *funcDecl = origFuncDecl->clone();
    4748                CodeGen::OperatorInfo opInfo;
     
    5455                assert( param != funcDecl->get_functionType()->get_parameters().end() );
    5556
    56                 if ( (*param)->get_name() == "" ) {
    57                         (*param)->set_name( paramNamer.newName() );
    58                         (*param)->set_linkage( LinkageSpec::C );
    59                 } // if
     57                for ( ; param != funcDecl->get_functionType()->get_parameters().end(); ++param ) {
     58                        if ( (*param)->get_name() == "" ) {
     59                                (*param)->set_name( paramNamer.newName() );
     60                                (*param)->set_linkage( LinkageSpec::C );
     61                        }
     62                        newExpr->get_args().push_back( new VariableExpr( *param ) );
     63                } // for
     64
     65                funcDecl->set_statements( new CompoundStmt( std::list< Label >() ) );
     66                newDecls.push_back( funcDecl );
    6067
    6168                switch ( opInfo.type ) {
     
    6572                  case CodeGen::OT_POSTFIX:
    6673                  case CodeGen::OT_INFIX:
    67                         newExpr->get_args().push_back( new VariableExpr( *param ) );
    68                         break;
    6974                  case CodeGen::OT_PREFIXASSIGN:
    7075                  case CodeGen::OT_POSTFIXASSIGN:
    7176                  case CodeGen::OT_INFIXASSIGN:
    72                         {
    73                                 newExpr->get_args().push_back( new VariableExpr( *param ) );
    74                                 // UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    75                                 // deref->get_args().push_back( new VariableExpr( *param ) );
    76                                 // newExpr->get_args().push_back( deref );
     77                                funcDecl->get_statements()->get_kids().push_back( new ReturnStmt( std::list< Label >(), newExpr ) );
    7778                                break;
    78                         }
     79                  case CodeGen::OT_CTOR:
     80                        // ctors don't return a value
     81                        if ( funcDecl->get_functionType()->get_parameters().size() == 1 ) {
     82                                // intrinsic default constructors should do nothing
     83                                // delete newExpr;
     84                                break;
     85                        } else {
     86                                assert( funcDecl->get_functionType()->get_parameters().size() == 2 );
     87                                // anything else is a single parameter constructor that is effectively a C-style assignment
     88                                // delete newExpr->get_function();
     89                                assert(newExpr->get_args().size()==2);
     90                                newExpr->set_function( new NameExpr( "?=?" ) );
     91                                funcDecl->get_statements()->get_kids().push_back( new ExprStmt( std::list< Label >(), newExpr ) );
     92                        }
     93                        break;
     94                  case CodeGen::OT_DTOR:
     95                        // intrinsic destructors should do nothing
     96                        // delete newExpr;
     97                        break;
    7998                  case CodeGen::OT_CONSTANT:
    8099                  case CodeGen::OT_LABELADDRESS:
     
    82101                        assert( false );
    83102                } // switch
    84 
    85                 for ( param++; param != funcDecl->get_functionType()->get_parameters().end(); ++param ) {
    86                         if ( (*param)->get_name() == "" ) {
    87                                 (*param)->set_name( paramNamer.newName() );
    88                                 (*param)->set_linkage( LinkageSpec::C );
    89                         }
    90                         newExpr->get_args().push_back( new VariableExpr( *param ) );
    91                 } // for
    92                 funcDecl->set_statements( new CompoundStmt( std::list< Label >() ) );
    93                 funcDecl->get_statements()->get_kids().push_back( new ReturnStmt( std::list< Label >(), newExpr ) );
    94                 newDecls.push_back( funcDecl );
    95103        }
    96104
    97105        void MakeLibCfa::visit( ObjectDecl* origObjDecl ) {
    98106                if ( origObjDecl->get_linkage() != LinkageSpec::Intrinsic ) return;
    99  
     107
    100108                ObjectDecl *objDecl = origObjDecl->clone();
    101109                assert( ! objDecl->get_init() );
    102110                std::list< Expression* > noDesignators;
    103                 objDecl->set_init( new SingleInit( new NameExpr( objDecl->get_name() ), noDesignators ) );
     111                objDecl->set_init( new SingleInit( new NameExpr( objDecl->get_name() ), noDesignators, false ) ); // cannot be constructed
    104112                newDecls.push_back( objDecl );
    105113        }
    106114} // namespace LibCfa
    107 
    108 // Local Variables: //
    109 // tab-width: 4 //
    110 // mode: c++ //
    111 // compile-command: "make install" //
    112 // End: //
  • src/Makefile.in

    r1b5c81ed rf80e0218  
    123123        GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT) \
    124124        GenPoly/driver_cfa_cpp-DeclMutator.$(OBJEXT) \
    125         InitTweak/driver_cfa_cpp-RemoveInit.$(OBJEXT) \
     125        InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT) \
     126        InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT) \
     127        InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT) \
     128        InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT) \
    126129        Parser/driver_cfa_cpp-parser.$(OBJEXT) \
    127130        Parser/driver_cfa_cpp-lex.$(OBJEXT) \
     
    159162        SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT) \
    160163        SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT) \
     164        SymTab/driver_cfa_cpp-Autogen.$(OBJEXT) \
    161165        SynTree/driver_cfa_cpp-Type.$(OBJEXT) \
    162166        SynTree/driver_cfa_cpp-VoidType.$(OBJEXT) \
     
    190194        SynTree/driver_cfa_cpp-Visitor.$(OBJEXT) \
    191195        SynTree/driver_cfa_cpp-Mutator.$(OBJEXT) \
     196        SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT) \
    192197        SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT) \
     198        SynTree/driver_cfa_cpp-Attribute.$(OBJEXT) \
    193199        Tuples/driver_cfa_cpp-Mutate.$(OBJEXT) \
    194200        Tuples/driver_cfa_cpp-AssignExpand.$(OBJEXT) \
     
    207213am__depfiles_maybe = depfiles
    208214am__mv = mv -f
     215AM_V_lt = $(am__v_lt_@AM_V@)
     216am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     217am__v_lt_0 = --silent
    209218CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    210219        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
     220AM_V_CXX = $(am__v_CXX_@AM_V@)
     221am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
     222am__v_CXX_0 = @echo "  CXX   " $@;
     223AM_V_at = $(am__v_at_@AM_V@)
     224am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     225am__v_at_0 = @
    211226CXXLD = $(CXX)
    212227CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    213228        -o $@
     229AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
     230am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
     231am__v_CXXLD_0 = @echo "  CXXLD " $@;
    214232@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
    215233LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
     234AM_V_LEX = $(am__v_LEX_@AM_V@)
     235am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
     236am__v_LEX_0 = @echo "  LEX   " $@;
    216237YLWRAP = $(top_srcdir)/automake/ylwrap
    217238@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
    218239YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
     240AM_V_YACC = $(am__v_YACC_@AM_V@)
     241am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
     242am__v_YACC_0 = @echo "  YACC  " $@;
    219243COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    220244        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     245AM_V_CC = $(am__v_CC_@AM_V@)
     246am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     247am__v_CC_0 = @echo "  CC    " $@;
    221248CCLD = $(CC)
    222249LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
     250AM_V_CCLD = $(am__v_CCLD_@AM_V@)
     251am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     252am__v_CCLD_0 = @echo "  CCLD  " $@;
     253AM_V_GEN = $(am__v_GEN_@AM_V@)
     254am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     255am__v_GEN_0 = @echo "  GEN   " $@;
    223256SOURCES = $(driver_cfa_cpp_SOURCES)
    224257DIST_SOURCES = $(driver_cfa_cpp_SOURCES)
     
    229262ALLOCA = @ALLOCA@
    230263AMTAR = @AMTAR@
     264AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    231265AUTOCONF = @AUTOCONF@
    232266AUTOHEADER = @AUTOHEADER@
     
    236270CC = @CC@
    237271CCDEPMODE = @CCDEPMODE@
     272CFA_BACKEND_CC = @CFA_BACKEND_CC@
    238273CFA_BINDIR = @CFA_BINDIR@
    239274CFA_INCDIR = @CFA_INCDIR@
     
    254289EGREP = @EGREP@
    255290EXEEXT = @EXEEXT@
    256 GCC_PATH = @GCC_PATH@
    257291GREP = @GREP@
    258292INSTALL = @INSTALL@
     
    345379        GenPoly/ScrubTyVars.cc GenPoly/Lvalue.cc GenPoly/Specialize.cc \
    346380        GenPoly/CopyParams.cc GenPoly/FindFunction.cc \
    347         GenPoly/DeclMutator.cc InitTweak/RemoveInit.cc \
    348         Parser/parser.yy Parser/lex.ll Parser/TypedefTable.cc \
    349         Parser/ParseNode.cc Parser/DeclarationNode.cc \
    350         Parser/ExpressionNode.cc Parser/StatementNode.cc \
    351         Parser/InitializerNode.cc Parser/TypeData.cc \
    352         Parser/LinkageSpec.cc Parser/parseutility.cc Parser/Parser.cc \
     381        GenPoly/DeclMutator.cc InitTweak/GenInit.cc \
     382        InitTweak/FixInit.cc InitTweak/FixGlobalInit.cc \
     383        InitTweak/InitTweak.cc Parser/parser.yy Parser/lex.ll \
     384        Parser/TypedefTable.cc Parser/ParseNode.cc \
     385        Parser/DeclarationNode.cc Parser/ExpressionNode.cc \
     386        Parser/StatementNode.cc Parser/InitializerNode.cc \
     387        Parser/TypeData.cc Parser/LinkageSpec.cc \
     388        Parser/parseutility.cc Parser/Parser.cc \
    353389        ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \
    354390        ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \
     
    362398        SymTab/Mangler.cc SymTab/Validate.cc SymTab/FixFunction.cc \
    363399        SymTab/ImplementationType.cc SymTab/TypeEquality.cc \
    364         SynTree/Type.cc SynTree/VoidType.cc SynTree/BasicType.cc \
    365         SynTree/PointerType.cc SynTree/ArrayType.cc \
    366         SynTree/FunctionType.cc SynTree/ReferenceToType.cc \
    367         SynTree/TupleType.cc SynTree/TypeofType.cc SynTree/AttrType.cc \
     400        SymTab/Autogen.cc SynTree/Type.cc SynTree/VoidType.cc \
     401        SynTree/BasicType.cc SynTree/PointerType.cc \
     402        SynTree/ArrayType.cc SynTree/FunctionType.cc \
     403        SynTree/ReferenceToType.cc SynTree/TupleType.cc \
     404        SynTree/TypeofType.cc SynTree/AttrType.cc \
    368405        SynTree/VarArgsType.cc SynTree/Constant.cc \
    369406        SynTree/Expression.cc SynTree/TupleExpr.cc \
     
    376413        SynTree/NamedTypeDecl.cc SynTree/TypeDecl.cc \
    377414        SynTree/Initializer.cc SynTree/Visitor.cc SynTree/Mutator.cc \
    378         SynTree/TypeSubstitution.cc Tuples/Mutate.cc \
    379         Tuples/AssignExpand.cc Tuples/FunctionFixer.cc \
    380         Tuples/TupleAssignment.cc Tuples/FunctionChecker.cc \
    381         Tuples/NameMatcher.cc
     415        SynTree/AddStmtVisitor.cc SynTree/TypeSubstitution.cc \
     416        SynTree/Attribute.cc Tuples/Mutate.cc Tuples/AssignExpand.cc \
     417        Tuples/FunctionFixer.cc Tuples/TupleAssignment.cc \
     418        Tuples/FunctionChecker.cc Tuples/NameMatcher.cc
    382419MAINTAINERCLEANFILES = Parser/parser.output ${libdir}/${notdir \
    383420        ${cfa_cpplib_PROGRAMS}}
     
    561598        @$(MKDIR_P) InitTweak/$(DEPDIR)
    562599        @: > InitTweak/$(DEPDIR)/$(am__dirstamp)
    563 InitTweak/driver_cfa_cpp-RemoveInit.$(OBJEXT):  \
     600InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
     601        InitTweak/$(DEPDIR)/$(am__dirstamp)
     602InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
     603        InitTweak/$(DEPDIR)/$(am__dirstamp)
     604InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT):  \
     605        InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
     606InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT):  \
    564607        InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
    565608Parser/parser.h: Parser/parser.cc
     
    670713SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT): SymTab/$(am__dirstamp) \
    671714        SymTab/$(DEPDIR)/$(am__dirstamp)
     715SymTab/driver_cfa_cpp-Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \
     716        SymTab/$(DEPDIR)/$(am__dirstamp)
    672717SynTree/$(am__dirstamp):
    673718        @$(MKDIR_P) SynTree
     
    738783SynTree/driver_cfa_cpp-Mutator.$(OBJEXT): SynTree/$(am__dirstamp) \
    739784        SynTree/$(DEPDIR)/$(am__dirstamp)
     785SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT):  \
     786        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    740787SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT):  \
    741788        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
     789SynTree/driver_cfa_cpp-Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \
     790        SynTree/$(DEPDIR)/$(am__dirstamp)
    742791Tuples/$(am__dirstamp):
    743792        @$(MKDIR_P) Tuples
     
    763812driver/cfa-cpp$(EXEEXT): $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_DEPENDENCIES) $(EXTRA_driver_cfa_cpp_DEPENDENCIES) driver/$(am__dirstamp)
    764813        @rm -f driver/cfa-cpp$(EXEEXT)
    765         $(driver_cfa_cpp_LINK) $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_LDADD) $(LIBS)
     814        $(AM_V_CXXLD)$(driver_cfa_cpp_LINK) $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_LDADD) $(LIBS)
    766815
    767816mostlyclean-compile:
     
    792841        -rm -f GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT)
    793842        -rm -f GenPoly/driver_cfa_cpp-Specialize.$(OBJEXT)
    794         -rm -f InitTweak/driver_cfa_cpp-RemoveInit.$(OBJEXT)
     843        -rm -f InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT)
     844        -rm -f InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT)
     845        -rm -f InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT)
     846        -rm -f InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT)
    795847        -rm -f Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT)
    796848        -rm -f Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT)
     
    822874        -rm -f ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT)
    823875        -rm -f ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT)
     876        -rm -f SymTab/driver_cfa_cpp-Autogen.$(OBJEXT)
    824877        -rm -f SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT)
    825878        -rm -f SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT)
     
    828881        -rm -f SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT)
    829882        -rm -f SymTab/driver_cfa_cpp-Validate.$(OBJEXT)
     883        -rm -f SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT)
    830884        -rm -f SynTree/driver_cfa_cpp-AddressExpr.$(OBJEXT)
    831885        -rm -f SynTree/driver_cfa_cpp-AggregateDecl.$(OBJEXT)
     
    833887        -rm -f SynTree/driver_cfa_cpp-ArrayType.$(OBJEXT)
    834888        -rm -f SynTree/driver_cfa_cpp-AttrType.$(OBJEXT)
     889        -rm -f SynTree/driver_cfa_cpp-Attribute.$(OBJEXT)
    835890        -rm -f SynTree/driver_cfa_cpp-BasicType.$(OBJEXT)
    836891        -rm -f SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT)
     
    897952@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po@am__quote@
    898953@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po@am__quote@
    899 @AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-RemoveInit.Po@am__quote@
     954@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Po@am__quote@
     955@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po@am__quote@
     956@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po@am__quote@
     957@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po@am__quote@
    900958@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po@am__quote@
    901959@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po@am__quote@
     
    927985@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po@am__quote@
    928986@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po@am__quote@
     987@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Po@am__quote@
    929988@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po@am__quote@
    930989@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Po@am__quote@
     
    933992@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Po@am__quote@
    934993@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po@am__quote@
     994@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Po@am__quote@
    935995@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po@am__quote@
    936996@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po@am__quote@
     
    938998@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po@am__quote@
    939999@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po@am__quote@
     1000@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Po@am__quote@
    9401001@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po@am__quote@
    9411002@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po@am__quote@
     
    9731034
    9741035.cc.o:
    975 @am__fastdepCXX_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
     1036@am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    9761037@am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    9771038@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
    978 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    979 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    980 @am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ $<
     1039@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     1040@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1041@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
    9811042
    9821043.cc.obj:
    983 @am__fastdepCXX_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
     1044@am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
    9841045@am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
    9851046@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
    986 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    987 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    988 @am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     1047@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     1048@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1049@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    9891050
    9901051driver_cfa_cpp-main.o: main.cc
    991 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-main.o -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-main.Tpo -c -o driver_cfa_cpp-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
    992 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/driver_cfa_cpp-main.Tpo $(DEPDIR)/driver_cfa_cpp-main.Po
    993 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='main.cc' object='driver_cfa_cpp-main.o' libtool=no @AMDEPBACKSLASH@
    994 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    995 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
     1052@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-main.o -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-main.Tpo -c -o driver_cfa_cpp-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
     1053@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-main.Tpo $(DEPDIR)/driver_cfa_cpp-main.Po
     1054@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='main.cc' object='driver_cfa_cpp-main.o' libtool=no @AMDEPBACKSLASH@
     1055@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1056@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
    9961057
    9971058driver_cfa_cpp-main.obj: main.cc
    998 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-main.obj -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-main.Tpo -c -o driver_cfa_cpp-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi`
    999 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/driver_cfa_cpp-main.Tpo $(DEPDIR)/driver_cfa_cpp-main.Po
    1000 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='main.cc' object='driver_cfa_cpp-main.obj' libtool=no @AMDEPBACKSLASH@
    1001 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1002 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi`
     1059@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-main.obj -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-main.Tpo -c -o driver_cfa_cpp-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi`
     1060@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-main.Tpo $(DEPDIR)/driver_cfa_cpp-main.Po
     1061@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='main.cc' object='driver_cfa_cpp-main.obj' libtool=no @AMDEPBACKSLASH@
     1062@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1063@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi`
    10031064
    10041065driver_cfa_cpp-MakeLibCfa.o: MakeLibCfa.cc
    1005 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-MakeLibCfa.o -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo -c -o driver_cfa_cpp-MakeLibCfa.o `test -f 'MakeLibCfa.cc' || echo '$(srcdir)/'`MakeLibCfa.cc
    1006 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Po
    1007 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='MakeLibCfa.cc' object='driver_cfa_cpp-MakeLibCfa.o' libtool=no @AMDEPBACKSLASH@
    1008 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1009 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-MakeLibCfa.o `test -f 'MakeLibCfa.cc' || echo '$(srcdir)/'`MakeLibCfa.cc
     1066@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-MakeLibCfa.o -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo -c -o driver_cfa_cpp-MakeLibCfa.o `test -f 'MakeLibCfa.cc' || echo '$(srcdir)/'`MakeLibCfa.cc
     1067@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Po
     1068@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='MakeLibCfa.cc' object='driver_cfa_cpp-MakeLibCfa.o' libtool=no @AMDEPBACKSLASH@
     1069@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1070@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-MakeLibCfa.o `test -f 'MakeLibCfa.cc' || echo '$(srcdir)/'`MakeLibCfa.cc
    10101071
    10111072driver_cfa_cpp-MakeLibCfa.obj: MakeLibCfa.cc
    1012 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-MakeLibCfa.obj -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo -c -o driver_cfa_cpp-MakeLibCfa.obj `if test -f 'MakeLibCfa.cc'; then $(CYGPATH_W) 'MakeLibCfa.cc'; else $(CYGPATH_W) '$(srcdir)/MakeLibCfa.cc'; fi`
    1013 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Po
    1014 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='MakeLibCfa.cc' object='driver_cfa_cpp-MakeLibCfa.obj' libtool=no @AMDEPBACKSLASH@
    1015 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1016 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-MakeLibCfa.obj `if test -f 'MakeLibCfa.cc'; then $(CYGPATH_W) 'MakeLibCfa.cc'; else $(CYGPATH_W) '$(srcdir)/MakeLibCfa.cc'; fi`
     1073@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT driver_cfa_cpp-MakeLibCfa.obj -MD -MP -MF $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo -c -o driver_cfa_cpp-MakeLibCfa.obj `if test -f 'MakeLibCfa.cc'; then $(CYGPATH_W) 'MakeLibCfa.cc'; else $(CYGPATH_W) '$(srcdir)/MakeLibCfa.cc'; fi`
     1074@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Po
     1075@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='MakeLibCfa.cc' object='driver_cfa_cpp-MakeLibCfa.obj' libtool=no @AMDEPBACKSLASH@
     1076@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1077@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o driver_cfa_cpp-MakeLibCfa.obj `if test -f 'MakeLibCfa.cc'; then $(CYGPATH_W) 'MakeLibCfa.cc'; else $(CYGPATH_W) '$(srcdir)/MakeLibCfa.cc'; fi`
    10171078
    10181079CodeGen/driver_cfa_cpp-Generate.o: CodeGen/Generate.cc
    1019 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-Generate.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo -c -o CodeGen/driver_cfa_cpp-Generate.o `test -f 'CodeGen/Generate.cc' || echo '$(srcdir)/'`CodeGen/Generate.cc
    1020 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po
    1021 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/Generate.cc' object='CodeGen/driver_cfa_cpp-Generate.o' libtool=no @AMDEPBACKSLASH@
    1022 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1023 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-Generate.o `test -f 'CodeGen/Generate.cc' || echo '$(srcdir)/'`CodeGen/Generate.cc
     1080@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-Generate.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo -c -o CodeGen/driver_cfa_cpp-Generate.o `test -f 'CodeGen/Generate.cc' || echo '$(srcdir)/'`CodeGen/Generate.cc
     1081@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po
     1082@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/Generate.cc' object='CodeGen/driver_cfa_cpp-Generate.o' libtool=no @AMDEPBACKSLASH@
     1083@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1084@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-Generate.o `test -f 'CodeGen/Generate.cc' || echo '$(srcdir)/'`CodeGen/Generate.cc
    10241085
    10251086CodeGen/driver_cfa_cpp-Generate.obj: CodeGen/Generate.cc
    1026 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-Generate.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo -c -o CodeGen/driver_cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
    1027 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po
    1028 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/Generate.cc' object='CodeGen/driver_cfa_cpp-Generate.obj' libtool=no @AMDEPBACKSLASH@
    1029 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1030 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
     1087@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-Generate.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo -c -o CodeGen/driver_cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
     1088@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po
     1089@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/Generate.cc' object='CodeGen/driver_cfa_cpp-Generate.obj' libtool=no @AMDEPBACKSLASH@
     1090@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1091@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
    10311092
    10321093CodeGen/driver_cfa_cpp-CodeGenerator.o: CodeGen/CodeGenerator.cc
    1033 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-CodeGenerator.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/driver_cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
    1034 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Po
    1035 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/CodeGenerator.cc' object='CodeGen/driver_cfa_cpp-CodeGenerator.o' libtool=no @AMDEPBACKSLASH@
    1036 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1037 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
     1094@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-CodeGenerator.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/driver_cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
     1095@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Po
     1096@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/CodeGenerator.cc' object='CodeGen/driver_cfa_cpp-CodeGenerator.o' libtool=no @AMDEPBACKSLASH@
     1097@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1098@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
    10381099
    10391100CodeGen/driver_cfa_cpp-CodeGenerator.obj: CodeGen/CodeGenerator.cc
    1040 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-CodeGenerator.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/driver_cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
    1041 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Po
    1042 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/CodeGenerator.cc' object='CodeGen/driver_cfa_cpp-CodeGenerator.obj' libtool=no @AMDEPBACKSLASH@
    1043 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1044 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
     1101@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-CodeGenerator.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/driver_cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
     1102@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Po
     1103@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/CodeGenerator.cc' object='CodeGen/driver_cfa_cpp-CodeGenerator.obj' libtool=no @AMDEPBACKSLASH@
     1104@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1105@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
    10451106
    10461107CodeGen/driver_cfa_cpp-GenType.o: CodeGen/GenType.cc
    1047 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-GenType.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo -c -o CodeGen/driver_cfa_cpp-GenType.o `test -f 'CodeGen/GenType.cc' || echo '$(srcdir)/'`CodeGen/GenType.cc
    1048 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Po
    1049 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/GenType.cc' object='CodeGen/driver_cfa_cpp-GenType.o' libtool=no @AMDEPBACKSLASH@
    1050 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1051 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-GenType.o `test -f 'CodeGen/GenType.cc' || echo '$(srcdir)/'`CodeGen/GenType.cc
     1108@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-GenType.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo -c -o CodeGen/driver_cfa_cpp-GenType.o `test -f 'CodeGen/GenType.cc' || echo '$(srcdir)/'`CodeGen/GenType.cc
     1109@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Po
     1110@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/GenType.cc' object='CodeGen/driver_cfa_cpp-GenType.o' libtool=no @AMDEPBACKSLASH@
     1111@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1112@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-GenType.o `test -f 'CodeGen/GenType.cc' || echo '$(srcdir)/'`CodeGen/GenType.cc
    10521113
    10531114CodeGen/driver_cfa_cpp-GenType.obj: CodeGen/GenType.cc
    1054 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-GenType.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo -c -o CodeGen/driver_cfa_cpp-GenType.obj `if test -f 'CodeGen/GenType.cc'; then $(CYGPATH_W) 'CodeGen/GenType.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/GenType.cc'; fi`
    1055 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Po
    1056 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/GenType.cc' object='CodeGen/driver_cfa_cpp-GenType.obj' libtool=no @AMDEPBACKSLASH@
    1057 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1058 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-GenType.obj `if test -f 'CodeGen/GenType.cc'; then $(CYGPATH_W) 'CodeGen/GenType.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/GenType.cc'; fi`
     1115@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-GenType.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo -c -o CodeGen/driver_cfa_cpp-GenType.obj `if test -f 'CodeGen/GenType.cc'; then $(CYGPATH_W) 'CodeGen/GenType.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/GenType.cc'; fi`
     1116@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Po
     1117@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/GenType.cc' object='CodeGen/driver_cfa_cpp-GenType.obj' libtool=no @AMDEPBACKSLASH@
     1118@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1119@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-GenType.obj `if test -f 'CodeGen/GenType.cc'; then $(CYGPATH_W) 'CodeGen/GenType.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/GenType.cc'; fi`
    10591120
    10601121CodeGen/driver_cfa_cpp-FixNames.o: CodeGen/FixNames.cc
    1061 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-FixNames.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo -c -o CodeGen/driver_cfa_cpp-FixNames.o `test -f 'CodeGen/FixNames.cc' || echo '$(srcdir)/'`CodeGen/FixNames.cc
    1062 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Po
    1063 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/FixNames.cc' object='CodeGen/driver_cfa_cpp-FixNames.o' libtool=no @AMDEPBACKSLASH@
    1064 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1065 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-FixNames.o `test -f 'CodeGen/FixNames.cc' || echo '$(srcdir)/'`CodeGen/FixNames.cc
     1122@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-FixNames.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo -c -o CodeGen/driver_cfa_cpp-FixNames.o `test -f 'CodeGen/FixNames.cc' || echo '$(srcdir)/'`CodeGen/FixNames.cc
     1123@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Po
     1124@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/FixNames.cc' object='CodeGen/driver_cfa_cpp-FixNames.o' libtool=no @AMDEPBACKSLASH@
     1125@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1126@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-FixNames.o `test -f 'CodeGen/FixNames.cc' || echo '$(srcdir)/'`CodeGen/FixNames.cc
    10661127
    10671128CodeGen/driver_cfa_cpp-FixNames.obj: CodeGen/FixNames.cc
    1068 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-FixNames.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo -c -o CodeGen/driver_cfa_cpp-FixNames.obj `if test -f 'CodeGen/FixNames.cc'; then $(CYGPATH_W) 'CodeGen/FixNames.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixNames.cc'; fi`
    1069 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Po
    1070 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/FixNames.cc' object='CodeGen/driver_cfa_cpp-FixNames.obj' libtool=no @AMDEPBACKSLASH@
    1071 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1072 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-FixNames.obj `if test -f 'CodeGen/FixNames.cc'; then $(CYGPATH_W) 'CodeGen/FixNames.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixNames.cc'; fi`
     1129@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-FixNames.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo -c -o CodeGen/driver_cfa_cpp-FixNames.obj `if test -f 'CodeGen/FixNames.cc'; then $(CYGPATH_W) 'CodeGen/FixNames.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixNames.cc'; fi`
     1130@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Po
     1131@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/FixNames.cc' object='CodeGen/driver_cfa_cpp-FixNames.obj' libtool=no @AMDEPBACKSLASH@
     1132@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1133@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-FixNames.obj `if test -f 'CodeGen/FixNames.cc'; then $(CYGPATH_W) 'CodeGen/FixNames.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixNames.cc'; fi`
    10731134
    10741135CodeGen/driver_cfa_cpp-OperatorTable.o: CodeGen/OperatorTable.cc
    1075 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-OperatorTable.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo -c -o CodeGen/driver_cfa_cpp-OperatorTable.o `test -f 'CodeGen/OperatorTable.cc' || echo '$(srcdir)/'`CodeGen/OperatorTable.cc
    1076 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po
    1077 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/OperatorTable.cc' object='CodeGen/driver_cfa_cpp-OperatorTable.o' libtool=no @AMDEPBACKSLASH@
    1078 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1079 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-OperatorTable.o `test -f 'CodeGen/OperatorTable.cc' || echo '$(srcdir)/'`CodeGen/OperatorTable.cc
     1136@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-OperatorTable.o -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo -c -o CodeGen/driver_cfa_cpp-OperatorTable.o `test -f 'CodeGen/OperatorTable.cc' || echo '$(srcdir)/'`CodeGen/OperatorTable.cc
     1137@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po
     1138@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/OperatorTable.cc' object='CodeGen/driver_cfa_cpp-OperatorTable.o' libtool=no @AMDEPBACKSLASH@
     1139@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1140@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-OperatorTable.o `test -f 'CodeGen/OperatorTable.cc' || echo '$(srcdir)/'`CodeGen/OperatorTable.cc
    10801141
    10811142CodeGen/driver_cfa_cpp-OperatorTable.obj: CodeGen/OperatorTable.cc
    1082 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-OperatorTable.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo -c -o CodeGen/driver_cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
    1083 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po
    1084 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/OperatorTable.cc' object='CodeGen/driver_cfa_cpp-OperatorTable.obj' libtool=no @AMDEPBACKSLASH@
    1085 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1086 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
     1143@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/driver_cfa_cpp-OperatorTable.obj -MD -MP -MF CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo -c -o CodeGen/driver_cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
     1144@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po
     1145@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/OperatorTable.cc' object='CodeGen/driver_cfa_cpp-OperatorTable.obj' libtool=no @AMDEPBACKSLASH@
     1146@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1147@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
    10871148
    10881149Common/driver_cfa_cpp-SemanticError.o: Common/SemanticError.cc
    1089 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-SemanticError.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo -c -o Common/driver_cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
    1090 @am__fastdepCXX_TRUE@   $(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po
    1091 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Common/SemanticError.cc' object='Common/driver_cfa_cpp-SemanticError.o' libtool=no @AMDEPBACKSLASH@
    1092 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1093 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
     1150@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-SemanticError.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo -c -o Common/driver_cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
     1151@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po
     1152@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/SemanticError.cc' object='Common/driver_cfa_cpp-SemanticError.o' libtool=no @AMDEPBACKSLASH@
     1153@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1154@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
    10941155
    10951156Common/driver_cfa_cpp-SemanticError.obj: Common/SemanticError.cc
    1096 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-SemanticError.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo -c -o Common/driver_cfa_cpp-SemanticError.obj `if test -f 'Common/SemanticError.cc'; then $(CYGPATH_W) 'Common/SemanticError.cc'; else $(CYGPATH_W) '$(srcdir)/Common/SemanticError.cc'; fi`
    1097 @am__fastdepCXX_TRUE@   $(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po
    1098 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Common/SemanticError.cc' object='Common/driver_cfa_cpp-SemanticError.obj' libtool=no @AMDEPBACKSLASH@
    1099 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1100 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-SemanticError.obj `if test -f 'Common/SemanticError.cc'; then $(CYGPATH_W) 'Common/SemanticError.cc'; else $(CYGPATH_W) '$(srcdir)/Common/SemanticError.cc'; fi`
     1157@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-SemanticError.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo -c -o Common/driver_cfa_cpp-SemanticError.obj `if test -f 'Common/SemanticError.cc'; then $(CYGPATH_W) 'Common/SemanticError.cc'; else $(CYGPATH_W) '$(srcdir)/Common/SemanticError.cc'; fi`
     1158@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po
     1159@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/SemanticError.cc' object='Common/driver_cfa_cpp-SemanticError.obj' libtool=no @AMDEPBACKSLASH@
     1160@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1161@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-SemanticError.obj `if test -f 'Common/SemanticError.cc'; then $(CYGPATH_W) 'Common/SemanticError.cc'; else $(CYGPATH_W) '$(srcdir)/Common/SemanticError.cc'; fi`
    11011162
    11021163Common/driver_cfa_cpp-UniqueName.o: Common/UniqueName.cc
    1103 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-UniqueName.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo -c -o Common/driver_cfa_cpp-UniqueName.o `test -f 'Common/UniqueName.cc' || echo '$(srcdir)/'`Common/UniqueName.cc
    1104 @am__fastdepCXX_TRUE@   $(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po
    1105 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Common/UniqueName.cc' object='Common/driver_cfa_cpp-UniqueName.o' libtool=no @AMDEPBACKSLASH@
    1106 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1107 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.o `test -f 'Common/UniqueName.cc' || echo '$(srcdir)/'`Common/UniqueName.cc
     1164@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-UniqueName.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo -c -o Common/driver_cfa_cpp-UniqueName.o `test -f 'Common/UniqueName.cc' || echo '$(srcdir)/'`Common/UniqueName.cc
     1165@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po
     1166@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/UniqueName.cc' object='Common/driver_cfa_cpp-UniqueName.o' libtool=no @AMDEPBACKSLASH@
     1167@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1168@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.o `test -f 'Common/UniqueName.cc' || echo '$(srcdir)/'`Common/UniqueName.cc
    11081169
    11091170Common/driver_cfa_cpp-UniqueName.obj: Common/UniqueName.cc
    1110 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-UniqueName.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
    1111 @am__fastdepCXX_TRUE@   $(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po
    1112 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Common/UniqueName.cc' object='Common/driver_cfa_cpp-UniqueName.obj' libtool=no @AMDEPBACKSLASH@
    1113 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1114 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
     1171@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-UniqueName.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
     1172@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po
     1173@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/UniqueName.cc' object='Common/driver_cfa_cpp-UniqueName.obj' libtool=no @AMDEPBACKSLASH@
     1174@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1175@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
    11151176
    11161177ControlStruct/driver_cfa_cpp-LabelGenerator.o: ControlStruct/LabelGenerator.cc
    1117 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelGenerator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
    1118 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Po
    1119 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelGenerator.cc' object='ControlStruct/driver_cfa_cpp-LabelGenerator.o' libtool=no @AMDEPBACKSLASH@
    1120 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1121 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
     1178@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelGenerator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
     1179@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Po
     1180@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelGenerator.cc' object='ControlStruct/driver_cfa_cpp-LabelGenerator.o' libtool=no @AMDEPBACKSLASH@
     1181@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1182@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
    11221183
    11231184ControlStruct/driver_cfa_cpp-LabelGenerator.obj: ControlStruct/LabelGenerator.cc
    1124 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelGenerator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.obj `if test -f 'ControlStruct/LabelGenerator.cc'; then $(CYGPATH_W) 'ControlStruct/LabelGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelGenerator.cc'; fi`
    1125 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Po
    1126 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelGenerator.cc' object='ControlStruct/driver_cfa_cpp-LabelGenerator.obj' libtool=no @AMDEPBACKSLASH@
    1127 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1128 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.obj `if test -f 'ControlStruct/LabelGenerator.cc'; then $(CYGPATH_W) 'ControlStruct/LabelGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelGenerator.cc'; fi`
     1185@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelGenerator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.obj `if test -f 'ControlStruct/LabelGenerator.cc'; then $(CYGPATH_W) 'ControlStruct/LabelGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelGenerator.cc'; fi`
     1186@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Po
     1187@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelGenerator.cc' object='ControlStruct/driver_cfa_cpp-LabelGenerator.obj' libtool=no @AMDEPBACKSLASH@
     1188@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1189@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.obj `if test -f 'ControlStruct/LabelGenerator.cc'; then $(CYGPATH_W) 'ControlStruct/LabelGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelGenerator.cc'; fi`
    11291190
    11301191ControlStruct/driver_cfa_cpp-LabelFixer.o: ControlStruct/LabelFixer.cc
    1131 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelFixer.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelFixer.o `test -f 'ControlStruct/LabelFixer.cc' || echo '$(srcdir)/'`ControlStruct/LabelFixer.cc
    1132 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po
    1133 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelFixer.cc' object='ControlStruct/driver_cfa_cpp-LabelFixer.o' libtool=no @AMDEPBACKSLASH@
    1134 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1135 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelFixer.o `test -f 'ControlStruct/LabelFixer.cc' || echo '$(srcdir)/'`ControlStruct/LabelFixer.cc
     1192@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelFixer.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelFixer.o `test -f 'ControlStruct/LabelFixer.cc' || echo '$(srcdir)/'`ControlStruct/LabelFixer.cc
     1193@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po
     1194@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelFixer.cc' object='ControlStruct/driver_cfa_cpp-LabelFixer.o' libtool=no @AMDEPBACKSLASH@
     1195@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1196@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelFixer.o `test -f 'ControlStruct/LabelFixer.cc' || echo '$(srcdir)/'`ControlStruct/LabelFixer.cc
    11361197
    11371198ControlStruct/driver_cfa_cpp-LabelFixer.obj: ControlStruct/LabelFixer.cc
    1138 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelFixer.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelFixer.obj `if test -f 'ControlStruct/LabelFixer.cc'; then $(CYGPATH_W) 'ControlStruct/LabelFixer.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelFixer.cc'; fi`
    1139 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po
    1140 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelFixer.cc' object='ControlStruct/driver_cfa_cpp-LabelFixer.obj' libtool=no @AMDEPBACKSLASH@
    1141 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1142 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelFixer.obj `if test -f 'ControlStruct/LabelFixer.cc'; then $(CYGPATH_W) 'ControlStruct/LabelFixer.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelFixer.cc'; fi`
     1199@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelFixer.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelFixer.obj `if test -f 'ControlStruct/LabelFixer.cc'; then $(CYGPATH_W) 'ControlStruct/LabelFixer.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelFixer.cc'; fi`
     1200@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po
     1201@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelFixer.cc' object='ControlStruct/driver_cfa_cpp-LabelFixer.obj' libtool=no @AMDEPBACKSLASH@
     1202@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1203@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelFixer.obj `if test -f 'ControlStruct/LabelFixer.cc'; then $(CYGPATH_W) 'ControlStruct/LabelFixer.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelFixer.cc'; fi`
    11431204
    11441205ControlStruct/driver_cfa_cpp-MLEMutator.o: ControlStruct/MLEMutator.cc
    1145 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-MLEMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-MLEMutator.o `test -f 'ControlStruct/MLEMutator.cc' || echo '$(srcdir)/'`ControlStruct/MLEMutator.cc
    1146 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Po
    1147 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/MLEMutator.cc' object='ControlStruct/driver_cfa_cpp-MLEMutator.o' libtool=no @AMDEPBACKSLASH@
    1148 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1149 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-MLEMutator.o `test -f 'ControlStruct/MLEMutator.cc' || echo '$(srcdir)/'`ControlStruct/MLEMutator.cc
     1206@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-MLEMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-MLEMutator.o `test -f 'ControlStruct/MLEMutator.cc' || echo '$(srcdir)/'`ControlStruct/MLEMutator.cc
     1207@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Po
     1208@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/MLEMutator.cc' object='ControlStruct/driver_cfa_cpp-MLEMutator.o' libtool=no @AMDEPBACKSLASH@
     1209@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1210@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-MLEMutator.o `test -f 'ControlStruct/MLEMutator.cc' || echo '$(srcdir)/'`ControlStruct/MLEMutator.cc
    11501211
    11511212ControlStruct/driver_cfa_cpp-MLEMutator.obj: ControlStruct/MLEMutator.cc
    1152 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-MLEMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-MLEMutator.obj `if test -f 'ControlStruct/MLEMutator.cc'; then $(CYGPATH_W) 'ControlStruct/MLEMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/MLEMutator.cc'; fi`
    1153 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Po
    1154 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/MLEMutator.cc' object='ControlStruct/driver_cfa_cpp-MLEMutator.obj' libtool=no @AMDEPBACKSLASH@
    1155 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1156 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-MLEMutator.obj `if test -f 'ControlStruct/MLEMutator.cc'; then $(CYGPATH_W) 'ControlStruct/MLEMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/MLEMutator.cc'; fi`
     1213@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-MLEMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-MLEMutator.obj `if test -f 'ControlStruct/MLEMutator.cc'; then $(CYGPATH_W) 'ControlStruct/MLEMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/MLEMutator.cc'; fi`
     1214@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Po
     1215@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/MLEMutator.cc' object='ControlStruct/driver_cfa_cpp-MLEMutator.obj' libtool=no @AMDEPBACKSLASH@
     1216@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1217@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-MLEMutator.obj `if test -f 'ControlStruct/MLEMutator.cc'; then $(CYGPATH_W) 'ControlStruct/MLEMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/MLEMutator.cc'; fi`
    11571218
    11581219ControlStruct/driver_cfa_cpp-CaseRangeMutator.o: ControlStruct/CaseRangeMutator.cc
    1159 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-CaseRangeMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-CaseRangeMutator.o `test -f 'ControlStruct/CaseRangeMutator.cc' || echo '$(srcdir)/'`ControlStruct/CaseRangeMutator.cc
    1160 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Po
    1161 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/CaseRangeMutator.cc' object='ControlStruct/driver_cfa_cpp-CaseRangeMutator.o' libtool=no @AMDEPBACKSLASH@
    1162 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1163 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-CaseRangeMutator.o `test -f 'ControlStruct/CaseRangeMutator.cc' || echo '$(srcdir)/'`ControlStruct/CaseRangeMutator.cc
     1220@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-CaseRangeMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-CaseRangeMutator.o `test -f 'ControlStruct/CaseRangeMutator.cc' || echo '$(srcdir)/'`ControlStruct/CaseRangeMutator.cc
     1221@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Po
     1222@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/CaseRangeMutator.cc' object='ControlStruct/driver_cfa_cpp-CaseRangeMutator.o' libtool=no @AMDEPBACKSLASH@
     1223@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1224@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-CaseRangeMutator.o `test -f 'ControlStruct/CaseRangeMutator.cc' || echo '$(srcdir)/'`ControlStruct/CaseRangeMutator.cc
    11641225
    11651226ControlStruct/driver_cfa_cpp-CaseRangeMutator.obj: ControlStruct/CaseRangeMutator.cc
    1166 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-CaseRangeMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-CaseRangeMutator.obj `if test -f 'ControlStruct/CaseRangeMutator.cc'; then $(CYGPATH_W) 'ControlStruct/CaseRangeMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/CaseRangeMutator.cc'; fi`
    1167 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Po
    1168 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/CaseRangeMutator.cc' object='ControlStruct/driver_cfa_cpp-CaseRangeMutator.obj' libtool=no @AMDEPBACKSLASH@
    1169 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1170 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-CaseRangeMutator.obj `if test -f 'ControlStruct/CaseRangeMutator.cc'; then $(CYGPATH_W) 'ControlStruct/CaseRangeMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/CaseRangeMutator.cc'; fi`
     1227@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-CaseRangeMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-CaseRangeMutator.obj `if test -f 'ControlStruct/CaseRangeMutator.cc'; then $(CYGPATH_W) 'ControlStruct/CaseRangeMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/CaseRangeMutator.cc'; fi`
     1228@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-CaseRangeMutator.Po
     1229@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/CaseRangeMutator.cc' object='ControlStruct/driver_cfa_cpp-CaseRangeMutator.obj' libtool=no @AMDEPBACKSLASH@
     1230@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1231@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-CaseRangeMutator.obj `if test -f 'ControlStruct/CaseRangeMutator.cc'; then $(CYGPATH_W) 'ControlStruct/CaseRangeMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/CaseRangeMutator.cc'; fi`
    11711232
    11721233ControlStruct/driver_cfa_cpp-Mutate.o: ControlStruct/Mutate.cc
    1173 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-Mutate.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo -c -o ControlStruct/driver_cfa_cpp-Mutate.o `test -f 'ControlStruct/Mutate.cc' || echo '$(srcdir)/'`ControlStruct/Mutate.cc
    1174 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
    1175 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/Mutate.cc' object='ControlStruct/driver_cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
    1176 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1177 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-Mutate.o `test -f 'ControlStruct/Mutate.cc' || echo '$(srcdir)/'`ControlStruct/Mutate.cc
     1234@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-Mutate.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo -c -o ControlStruct/driver_cfa_cpp-Mutate.o `test -f 'ControlStruct/Mutate.cc' || echo '$(srcdir)/'`ControlStruct/Mutate.cc
     1235@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
     1236@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/Mutate.cc' object='ControlStruct/driver_cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
     1237@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1238@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-Mutate.o `test -f 'ControlStruct/Mutate.cc' || echo '$(srcdir)/'`ControlStruct/Mutate.cc
    11781239
    11791240ControlStruct/driver_cfa_cpp-Mutate.obj: ControlStruct/Mutate.cc
    1180 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-Mutate.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo -c -o ControlStruct/driver_cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
    1181 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
    1182 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/Mutate.cc' object='ControlStruct/driver_cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
    1183 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1184 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
     1241@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-Mutate.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo -c -o ControlStruct/driver_cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
     1242@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
     1243@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/Mutate.cc' object='ControlStruct/driver_cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
     1244@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1245@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
    11851246
    11861247ControlStruct/driver_cfa_cpp-ChooseMutator.o: ControlStruct/ChooseMutator.cc
    1187 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ChooseMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.o `test -f 'ControlStruct/ChooseMutator.cc' || echo '$(srcdir)/'`ControlStruct/ChooseMutator.cc
    1188 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Po
    1189 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/ChooseMutator.cc' object='ControlStruct/driver_cfa_cpp-ChooseMutator.o' libtool=no @AMDEPBACKSLASH@
    1190 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1191 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.o `test -f 'ControlStruct/ChooseMutator.cc' || echo '$(srcdir)/'`ControlStruct/ChooseMutator.cc
     1248@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ChooseMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.o `test -f 'ControlStruct/ChooseMutator.cc' || echo '$(srcdir)/'`ControlStruct/ChooseMutator.cc
     1249@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Po
     1250@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/ChooseMutator.cc' object='ControlStruct/driver_cfa_cpp-ChooseMutator.o' libtool=no @AMDEPBACKSLASH@
     1251@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1252@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.o `test -f 'ControlStruct/ChooseMutator.cc' || echo '$(srcdir)/'`ControlStruct/ChooseMutator.cc
    11921253
    11931254ControlStruct/driver_cfa_cpp-ChooseMutator.obj: ControlStruct/ChooseMutator.cc
    1194 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ChooseMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.obj `if test -f 'ControlStruct/ChooseMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ChooseMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ChooseMutator.cc'; fi`
    1195 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Po
    1196 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/ChooseMutator.cc' object='ControlStruct/driver_cfa_cpp-ChooseMutator.obj' libtool=no @AMDEPBACKSLASH@
    1197 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1198 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.obj `if test -f 'ControlStruct/ChooseMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ChooseMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ChooseMutator.cc'; fi`
     1255@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ChooseMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.obj `if test -f 'ControlStruct/ChooseMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ChooseMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ChooseMutator.cc'; fi`
     1256@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ChooseMutator.Po
     1257@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/ChooseMutator.cc' object='ControlStruct/driver_cfa_cpp-ChooseMutator.obj' libtool=no @AMDEPBACKSLASH@
     1258@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1259@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ChooseMutator.obj `if test -f 'ControlStruct/ChooseMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ChooseMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ChooseMutator.cc'; fi`
    11991260
    12001261ControlStruct/driver_cfa_cpp-ForExprMutator.o: ControlStruct/ForExprMutator.cc
    1201 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ForExprMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
    1202 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po
    1203 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/ForExprMutator.cc' object='ControlStruct/driver_cfa_cpp-ForExprMutator.o' libtool=no @AMDEPBACKSLASH@
    1204 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1205 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
     1262@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ForExprMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
     1263@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po
     1264@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/ForExprMutator.cc' object='ControlStruct/driver_cfa_cpp-ForExprMutator.o' libtool=no @AMDEPBACKSLASH@
     1265@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1266@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
    12061267
    12071268ControlStruct/driver_cfa_cpp-ForExprMutator.obj: ControlStruct/ForExprMutator.cc
    1208 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ForExprMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.obj `if test -f 'ControlStruct/ForExprMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ForExprMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ForExprMutator.cc'; fi`
    1209 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po
    1210 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/ForExprMutator.cc' object='ControlStruct/driver_cfa_cpp-ForExprMutator.obj' libtool=no @AMDEPBACKSLASH@
    1211 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1212 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.obj `if test -f 'ControlStruct/ForExprMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ForExprMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ForExprMutator.cc'; fi`
     1269@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-ForExprMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.obj `if test -f 'ControlStruct/ForExprMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ForExprMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ForExprMutator.cc'; fi`
     1270@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po
     1271@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/ForExprMutator.cc' object='ControlStruct/driver_cfa_cpp-ForExprMutator.obj' libtool=no @AMDEPBACKSLASH@
     1272@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1273@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-ForExprMutator.obj `if test -f 'ControlStruct/ForExprMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ForExprMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ForExprMutator.cc'; fi`
    12131274
    12141275ControlStruct/driver_cfa_cpp-LabelTypeChecker.o: ControlStruct/LabelTypeChecker.cc
    1215 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelTypeChecker.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelTypeChecker.o `test -f 'ControlStruct/LabelTypeChecker.cc' || echo '$(srcdir)/'`ControlStruct/LabelTypeChecker.cc
    1216 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Po
    1217 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelTypeChecker.cc' object='ControlStruct/driver_cfa_cpp-LabelTypeChecker.o' libtool=no @AMDEPBACKSLASH@
    1218 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1219 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelTypeChecker.o `test -f 'ControlStruct/LabelTypeChecker.cc' || echo '$(srcdir)/'`ControlStruct/LabelTypeChecker.cc
     1276@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelTypeChecker.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelTypeChecker.o `test -f 'ControlStruct/LabelTypeChecker.cc' || echo '$(srcdir)/'`ControlStruct/LabelTypeChecker.cc
     1277@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Po
     1278@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelTypeChecker.cc' object='ControlStruct/driver_cfa_cpp-LabelTypeChecker.o' libtool=no @AMDEPBACKSLASH@
     1279@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1280@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelTypeChecker.o `test -f 'ControlStruct/LabelTypeChecker.cc' || echo '$(srcdir)/'`ControlStruct/LabelTypeChecker.cc
    12201281
    12211282ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj: ControlStruct/LabelTypeChecker.cc
    1222 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj `if test -f 'ControlStruct/LabelTypeChecker.cc'; then $(CYGPATH_W) 'ControlStruct/LabelTypeChecker.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelTypeChecker.cc'; fi`
    1223 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Po
    1224 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelTypeChecker.cc' object='ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj' libtool=no @AMDEPBACKSLASH@
    1225 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1226 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj `if test -f 'ControlStruct/LabelTypeChecker.cc'; then $(CYGPATH_W) 'ControlStruct/LabelTypeChecker.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelTypeChecker.cc'; fi`
     1283@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj `if test -f 'ControlStruct/LabelTypeChecker.cc'; then $(CYGPATH_W) 'ControlStruct/LabelTypeChecker.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelTypeChecker.cc'; fi`
     1284@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Po
     1285@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelTypeChecker.cc' object='ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj' libtool=no @AMDEPBACKSLASH@
     1286@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1287@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj `if test -f 'ControlStruct/LabelTypeChecker.cc'; then $(CYGPATH_W) 'ControlStruct/LabelTypeChecker.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelTypeChecker.cc'; fi`
    12271288
    12281289Designators/driver_cfa_cpp-Processor.o: Designators/Processor.cc
    1229 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Designators/driver_cfa_cpp-Processor.o -MD -MP -MF Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Tpo -c -o Designators/driver_cfa_cpp-Processor.o `test -f 'Designators/Processor.cc' || echo '$(srcdir)/'`Designators/Processor.cc
    1230 @am__fastdepCXX_TRUE@   $(am__mv) Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Tpo Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Po
    1231 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Designators/Processor.cc' object='Designators/driver_cfa_cpp-Processor.o' libtool=no @AMDEPBACKSLASH@
    1232 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1233 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Designators/driver_cfa_cpp-Processor.o `test -f 'Designators/Processor.cc' || echo '$(srcdir)/'`Designators/Processor.cc
     1290@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Designators/driver_cfa_cpp-Processor.o -MD -MP -MF Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Tpo -c -o Designators/driver_cfa_cpp-Processor.o `test -f 'Designators/Processor.cc' || echo '$(srcdir)/'`Designators/Processor.cc
     1291@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Tpo Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Po
     1292@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Designators/Processor.cc' object='Designators/driver_cfa_cpp-Processor.o' libtool=no @AMDEPBACKSLASH@
     1293@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1294@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Designators/driver_cfa_cpp-Processor.o `test -f 'Designators/Processor.cc' || echo '$(srcdir)/'`Designators/Processor.cc
    12341295
    12351296Designators/driver_cfa_cpp-Processor.obj: Designators/Processor.cc
    1236 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Designators/driver_cfa_cpp-Processor.obj -MD -MP -MF Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Tpo -c -o Designators/driver_cfa_cpp-Processor.obj `if test -f 'Designators/Processor.cc'; then $(CYGPATH_W) 'Designators/Processor.cc'; else $(CYGPATH_W) '$(srcdir)/Designators/Processor.cc'; fi`
    1237 @am__fastdepCXX_TRUE@   $(am__mv) Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Tpo Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Po
    1238 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Designators/Processor.cc' object='Designators/driver_cfa_cpp-Processor.obj' libtool=no @AMDEPBACKSLASH@
    1239 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1240 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Designators/driver_cfa_cpp-Processor.obj `if test -f 'Designators/Processor.cc'; then $(CYGPATH_W) 'Designators/Processor.cc'; else $(CYGPATH_W) '$(srcdir)/Designators/Processor.cc'; fi`
     1297@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Designators/driver_cfa_cpp-Processor.obj -MD -MP -MF Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Tpo -c -o Designators/driver_cfa_cpp-Processor.obj `if test -f 'Designators/Processor.cc'; then $(CYGPATH_W) 'Designators/Processor.cc'; else $(CYGPATH_W) '$(srcdir)/Designators/Processor.cc'; fi`
     1298@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Tpo Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Po
     1299@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Designators/Processor.cc' object='Designators/driver_cfa_cpp-Processor.obj' libtool=no @AMDEPBACKSLASH@
     1300@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1301@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Designators/driver_cfa_cpp-Processor.obj `if test -f 'Designators/Processor.cc'; then $(CYGPATH_W) 'Designators/Processor.cc'; else $(CYGPATH_W) '$(srcdir)/Designators/Processor.cc'; fi`
    12411302
    12421303GenPoly/driver_cfa_cpp-Box.o: GenPoly/Box.cc
    1243 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Box.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo -c -o GenPoly/driver_cfa_cpp-Box.o `test -f 'GenPoly/Box.cc' || echo '$(srcdir)/'`GenPoly/Box.cc
    1244 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Po
    1245 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Box.cc' object='GenPoly/driver_cfa_cpp-Box.o' libtool=no @AMDEPBACKSLASH@
    1246 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1247 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Box.o `test -f 'GenPoly/Box.cc' || echo '$(srcdir)/'`GenPoly/Box.cc
     1304@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Box.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo -c -o GenPoly/driver_cfa_cpp-Box.o `test -f 'GenPoly/Box.cc' || echo '$(srcdir)/'`GenPoly/Box.cc
     1305@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Po
     1306@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Box.cc' object='GenPoly/driver_cfa_cpp-Box.o' libtool=no @AMDEPBACKSLASH@
     1307@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1308@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Box.o `test -f 'GenPoly/Box.cc' || echo '$(srcdir)/'`GenPoly/Box.cc
    12481309
    12491310GenPoly/driver_cfa_cpp-Box.obj: GenPoly/Box.cc
    1250 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Box.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo -c -o GenPoly/driver_cfa_cpp-Box.obj `if test -f 'GenPoly/Box.cc'; then $(CYGPATH_W) 'GenPoly/Box.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Box.cc'; fi`
    1251 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Po
    1252 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Box.cc' object='GenPoly/driver_cfa_cpp-Box.obj' libtool=no @AMDEPBACKSLASH@
    1253 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1254 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Box.obj `if test -f 'GenPoly/Box.cc'; then $(CYGPATH_W) 'GenPoly/Box.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Box.cc'; fi`
     1311@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Box.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo -c -o GenPoly/driver_cfa_cpp-Box.obj `if test -f 'GenPoly/Box.cc'; then $(CYGPATH_W) 'GenPoly/Box.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Box.cc'; fi`
     1312@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Po
     1313@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Box.cc' object='GenPoly/driver_cfa_cpp-Box.obj' libtool=no @AMDEPBACKSLASH@
     1314@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1315@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Box.obj `if test -f 'GenPoly/Box.cc'; then $(CYGPATH_W) 'GenPoly/Box.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Box.cc'; fi`
    12551316
    12561317GenPoly/driver_cfa_cpp-GenPoly.o: GenPoly/GenPoly.cc
    1257 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-GenPoly.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo -c -o GenPoly/driver_cfa_cpp-GenPoly.o `test -f 'GenPoly/GenPoly.cc' || echo '$(srcdir)/'`GenPoly/GenPoly.cc
    1258 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po
    1259 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/GenPoly.cc' object='GenPoly/driver_cfa_cpp-GenPoly.o' libtool=no @AMDEPBACKSLASH@
    1260 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1261 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-GenPoly.o `test -f 'GenPoly/GenPoly.cc' || echo '$(srcdir)/'`GenPoly/GenPoly.cc
     1318@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-GenPoly.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo -c -o GenPoly/driver_cfa_cpp-GenPoly.o `test -f 'GenPoly/GenPoly.cc' || echo '$(srcdir)/'`GenPoly/GenPoly.cc
     1319@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po
     1320@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/GenPoly.cc' object='GenPoly/driver_cfa_cpp-GenPoly.o' libtool=no @AMDEPBACKSLASH@
     1321@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1322@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-GenPoly.o `test -f 'GenPoly/GenPoly.cc' || echo '$(srcdir)/'`GenPoly/GenPoly.cc
    12621323
    12631324GenPoly/driver_cfa_cpp-GenPoly.obj: GenPoly/GenPoly.cc
    1264 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-GenPoly.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo -c -o GenPoly/driver_cfa_cpp-GenPoly.obj `if test -f 'GenPoly/GenPoly.cc'; then $(CYGPATH_W) 'GenPoly/GenPoly.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/GenPoly.cc'; fi`
    1265 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po
    1266 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/GenPoly.cc' object='GenPoly/driver_cfa_cpp-GenPoly.obj' libtool=no @AMDEPBACKSLASH@
    1267 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1268 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-GenPoly.obj `if test -f 'GenPoly/GenPoly.cc'; then $(CYGPATH_W) 'GenPoly/GenPoly.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/GenPoly.cc'; fi`
     1325@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-GenPoly.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo -c -o GenPoly/driver_cfa_cpp-GenPoly.obj `if test -f 'GenPoly/GenPoly.cc'; then $(CYGPATH_W) 'GenPoly/GenPoly.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/GenPoly.cc'; fi`
     1326@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po
     1327@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/GenPoly.cc' object='GenPoly/driver_cfa_cpp-GenPoly.obj' libtool=no @AMDEPBACKSLASH@
     1328@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1329@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-GenPoly.obj `if test -f 'GenPoly/GenPoly.cc'; then $(CYGPATH_W) 'GenPoly/GenPoly.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/GenPoly.cc'; fi`
    12691330
    12701331GenPoly/driver_cfa_cpp-PolyMutator.o: GenPoly/PolyMutator.cc
    1271 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-PolyMutator.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Tpo -c -o GenPoly/driver_cfa_cpp-PolyMutator.o `test -f 'GenPoly/PolyMutator.cc' || echo '$(srcdir)/'`GenPoly/PolyMutator.cc
    1272 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Po
    1273 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/PolyMutator.cc' object='GenPoly/driver_cfa_cpp-PolyMutator.o' libtool=no @AMDEPBACKSLASH@
    1274 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1275 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-PolyMutator.o `test -f 'GenPoly/PolyMutator.cc' || echo '$(srcdir)/'`GenPoly/PolyMutator.cc
     1332@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-PolyMutator.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Tpo -c -o GenPoly/driver_cfa_cpp-PolyMutator.o `test -f 'GenPoly/PolyMutator.cc' || echo '$(srcdir)/'`GenPoly/PolyMutator.cc
     1333@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Po
     1334@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/PolyMutator.cc' object='GenPoly/driver_cfa_cpp-PolyMutator.o' libtool=no @AMDEPBACKSLASH@
     1335@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1336@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-PolyMutator.o `test -f 'GenPoly/PolyMutator.cc' || echo '$(srcdir)/'`GenPoly/PolyMutator.cc
    12761337
    12771338GenPoly/driver_cfa_cpp-PolyMutator.obj: GenPoly/PolyMutator.cc
    1278 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-PolyMutator.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Tpo -c -o GenPoly/driver_cfa_cpp-PolyMutator.obj `if test -f 'GenPoly/PolyMutator.cc'; then $(CYGPATH_W) 'GenPoly/PolyMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/PolyMutator.cc'; fi`
    1279 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Po
    1280 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/PolyMutator.cc' object='GenPoly/driver_cfa_cpp-PolyMutator.obj' libtool=no @AMDEPBACKSLASH@
    1281 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1282 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-PolyMutator.obj `if test -f 'GenPoly/PolyMutator.cc'; then $(CYGPATH_W) 'GenPoly/PolyMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/PolyMutator.cc'; fi`
     1339@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-PolyMutator.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Tpo -c -o GenPoly/driver_cfa_cpp-PolyMutator.obj `if test -f 'GenPoly/PolyMutator.cc'; then $(CYGPATH_W) 'GenPoly/PolyMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/PolyMutator.cc'; fi`
     1340@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Po
     1341@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/PolyMutator.cc' object='GenPoly/driver_cfa_cpp-PolyMutator.obj' libtool=no @AMDEPBACKSLASH@
     1342@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1343@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-PolyMutator.obj `if test -f 'GenPoly/PolyMutator.cc'; then $(CYGPATH_W) 'GenPoly/PolyMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/PolyMutator.cc'; fi`
    12831344
    12841345GenPoly/driver_cfa_cpp-ScrubTyVars.o: GenPoly/ScrubTyVars.cc
    1285 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-ScrubTyVars.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.o `test -f 'GenPoly/ScrubTyVars.cc' || echo '$(srcdir)/'`GenPoly/ScrubTyVars.cc
    1286 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po
    1287 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/ScrubTyVars.cc' object='GenPoly/driver_cfa_cpp-ScrubTyVars.o' libtool=no @AMDEPBACKSLASH@
    1288 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1289 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.o `test -f 'GenPoly/ScrubTyVars.cc' || echo '$(srcdir)/'`GenPoly/ScrubTyVars.cc
     1346@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-ScrubTyVars.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.o `test -f 'GenPoly/ScrubTyVars.cc' || echo '$(srcdir)/'`GenPoly/ScrubTyVars.cc
     1347@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po
     1348@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/ScrubTyVars.cc' object='GenPoly/driver_cfa_cpp-ScrubTyVars.o' libtool=no @AMDEPBACKSLASH@
     1349@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1350@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.o `test -f 'GenPoly/ScrubTyVars.cc' || echo '$(srcdir)/'`GenPoly/ScrubTyVars.cc
    12901351
    12911352GenPoly/driver_cfa_cpp-ScrubTyVars.obj: GenPoly/ScrubTyVars.cc
    1292 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-ScrubTyVars.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.obj `if test -f 'GenPoly/ScrubTyVars.cc'; then $(CYGPATH_W) 'GenPoly/ScrubTyVars.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/ScrubTyVars.cc'; fi`
    1293 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po
    1294 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/ScrubTyVars.cc' object='GenPoly/driver_cfa_cpp-ScrubTyVars.obj' libtool=no @AMDEPBACKSLASH@
    1295 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1296 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.obj `if test -f 'GenPoly/ScrubTyVars.cc'; then $(CYGPATH_W) 'GenPoly/ScrubTyVars.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/ScrubTyVars.cc'; fi`
     1353@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-ScrubTyVars.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.obj `if test -f 'GenPoly/ScrubTyVars.cc'; then $(CYGPATH_W) 'GenPoly/ScrubTyVars.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/ScrubTyVars.cc'; fi`
     1354@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po
     1355@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/ScrubTyVars.cc' object='GenPoly/driver_cfa_cpp-ScrubTyVars.obj' libtool=no @AMDEPBACKSLASH@
     1356@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1357@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-ScrubTyVars.obj `if test -f 'GenPoly/ScrubTyVars.cc'; then $(CYGPATH_W) 'GenPoly/ScrubTyVars.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/ScrubTyVars.cc'; fi`
    12971358
    12981359GenPoly/driver_cfa_cpp-Lvalue.o: GenPoly/Lvalue.cc
    1299 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Lvalue.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo -c -o GenPoly/driver_cfa_cpp-Lvalue.o `test -f 'GenPoly/Lvalue.cc' || echo '$(srcdir)/'`GenPoly/Lvalue.cc
    1300 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po
    1301 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Lvalue.cc' object='GenPoly/driver_cfa_cpp-Lvalue.o' libtool=no @AMDEPBACKSLASH@
    1302 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1303 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Lvalue.o `test -f 'GenPoly/Lvalue.cc' || echo '$(srcdir)/'`GenPoly/Lvalue.cc
     1360@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Lvalue.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo -c -o GenPoly/driver_cfa_cpp-Lvalue.o `test -f 'GenPoly/Lvalue.cc' || echo '$(srcdir)/'`GenPoly/Lvalue.cc
     1361@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po
     1362@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Lvalue.cc' object='GenPoly/driver_cfa_cpp-Lvalue.o' libtool=no @AMDEPBACKSLASH@
     1363@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1364@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Lvalue.o `test -f 'GenPoly/Lvalue.cc' || echo '$(srcdir)/'`GenPoly/Lvalue.cc
    13041365
    13051366GenPoly/driver_cfa_cpp-Lvalue.obj: GenPoly/Lvalue.cc
    1306 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Lvalue.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo -c -o GenPoly/driver_cfa_cpp-Lvalue.obj `if test -f 'GenPoly/Lvalue.cc'; then $(CYGPATH_W) 'GenPoly/Lvalue.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Lvalue.cc'; fi`
    1307 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po
    1308 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Lvalue.cc' object='GenPoly/driver_cfa_cpp-Lvalue.obj' libtool=no @AMDEPBACKSLASH@
    1309 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1310 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Lvalue.obj `if test -f 'GenPoly/Lvalue.cc'; then $(CYGPATH_W) 'GenPoly/Lvalue.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Lvalue.cc'; fi`
     1367@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Lvalue.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo -c -o GenPoly/driver_cfa_cpp-Lvalue.obj `if test -f 'GenPoly/Lvalue.cc'; then $(CYGPATH_W) 'GenPoly/Lvalue.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Lvalue.cc'; fi`
     1368@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po
     1369@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Lvalue.cc' object='GenPoly/driver_cfa_cpp-Lvalue.obj' libtool=no @AMDEPBACKSLASH@
     1370@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1371@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Lvalue.obj `if test -f 'GenPoly/Lvalue.cc'; then $(CYGPATH_W) 'GenPoly/Lvalue.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Lvalue.cc'; fi`
    13111372
    13121373GenPoly/driver_cfa_cpp-Specialize.o: GenPoly/Specialize.cc
    1313 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Specialize.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo -c -o GenPoly/driver_cfa_cpp-Specialize.o `test -f 'GenPoly/Specialize.cc' || echo '$(srcdir)/'`GenPoly/Specialize.cc
    1314 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po
    1315 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Specialize.cc' object='GenPoly/driver_cfa_cpp-Specialize.o' libtool=no @AMDEPBACKSLASH@
    1316 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1317 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Specialize.o `test -f 'GenPoly/Specialize.cc' || echo '$(srcdir)/'`GenPoly/Specialize.cc
     1374@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Specialize.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo -c -o GenPoly/driver_cfa_cpp-Specialize.o `test -f 'GenPoly/Specialize.cc' || echo '$(srcdir)/'`GenPoly/Specialize.cc
     1375@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po
     1376@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Specialize.cc' object='GenPoly/driver_cfa_cpp-Specialize.o' libtool=no @AMDEPBACKSLASH@
     1377@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1378@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Specialize.o `test -f 'GenPoly/Specialize.cc' || echo '$(srcdir)/'`GenPoly/Specialize.cc
    13181379
    13191380GenPoly/driver_cfa_cpp-Specialize.obj: GenPoly/Specialize.cc
    1320 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Specialize.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo -c -o GenPoly/driver_cfa_cpp-Specialize.obj `if test -f 'GenPoly/Specialize.cc'; then $(CYGPATH_W) 'GenPoly/Specialize.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Specialize.cc'; fi`
    1321 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po
    1322 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Specialize.cc' object='GenPoly/driver_cfa_cpp-Specialize.obj' libtool=no @AMDEPBACKSLASH@
    1323 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1324 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Specialize.obj `if test -f 'GenPoly/Specialize.cc'; then $(CYGPATH_W) 'GenPoly/Specialize.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Specialize.cc'; fi`
     1381@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-Specialize.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo -c -o GenPoly/driver_cfa_cpp-Specialize.obj `if test -f 'GenPoly/Specialize.cc'; then $(CYGPATH_W) 'GenPoly/Specialize.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Specialize.cc'; fi`
     1382@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po
     1383@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Specialize.cc' object='GenPoly/driver_cfa_cpp-Specialize.obj' libtool=no @AMDEPBACKSLASH@
     1384@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1385@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-Specialize.obj `if test -f 'GenPoly/Specialize.cc'; then $(CYGPATH_W) 'GenPoly/Specialize.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Specialize.cc'; fi`
    13251386
    13261387GenPoly/driver_cfa_cpp-CopyParams.o: GenPoly/CopyParams.cc
    1327 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-CopyParams.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Tpo -c -o GenPoly/driver_cfa_cpp-CopyParams.o `test -f 'GenPoly/CopyParams.cc' || echo '$(srcdir)/'`GenPoly/CopyParams.cc
    1328 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Po
    1329 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/CopyParams.cc' object='GenPoly/driver_cfa_cpp-CopyParams.o' libtool=no @AMDEPBACKSLASH@
    1330 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1331 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-CopyParams.o `test -f 'GenPoly/CopyParams.cc' || echo '$(srcdir)/'`GenPoly/CopyParams.cc
     1388@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-CopyParams.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Tpo -c -o GenPoly/driver_cfa_cpp-CopyParams.o `test -f 'GenPoly/CopyParams.cc' || echo '$(srcdir)/'`GenPoly/CopyParams.cc
     1389@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Po
     1390@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/CopyParams.cc' object='GenPoly/driver_cfa_cpp-CopyParams.o' libtool=no @AMDEPBACKSLASH@
     1391@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1392@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-CopyParams.o `test -f 'GenPoly/CopyParams.cc' || echo '$(srcdir)/'`GenPoly/CopyParams.cc
    13321393
    13331394GenPoly/driver_cfa_cpp-CopyParams.obj: GenPoly/CopyParams.cc
    1334 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-CopyParams.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Tpo -c -o GenPoly/driver_cfa_cpp-CopyParams.obj `if test -f 'GenPoly/CopyParams.cc'; then $(CYGPATH_W) 'GenPoly/CopyParams.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/CopyParams.cc'; fi`
    1335 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Po
    1336 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/CopyParams.cc' object='GenPoly/driver_cfa_cpp-CopyParams.obj' libtool=no @AMDEPBACKSLASH@
    1337 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1338 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-CopyParams.obj `if test -f 'GenPoly/CopyParams.cc'; then $(CYGPATH_W) 'GenPoly/CopyParams.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/CopyParams.cc'; fi`
     1395@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-CopyParams.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Tpo -c -o GenPoly/driver_cfa_cpp-CopyParams.obj `if test -f 'GenPoly/CopyParams.cc'; then $(CYGPATH_W) 'GenPoly/CopyParams.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/CopyParams.cc'; fi`
     1396@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Po
     1397@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/CopyParams.cc' object='GenPoly/driver_cfa_cpp-CopyParams.obj' libtool=no @AMDEPBACKSLASH@
     1398@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1399@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-CopyParams.obj `if test -f 'GenPoly/CopyParams.cc'; then $(CYGPATH_W) 'GenPoly/CopyParams.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/CopyParams.cc'; fi`
    13391400
    13401401GenPoly/driver_cfa_cpp-FindFunction.o: GenPoly/FindFunction.cc
    1341 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-FindFunction.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo -c -o GenPoly/driver_cfa_cpp-FindFunction.o `test -f 'GenPoly/FindFunction.cc' || echo '$(srcdir)/'`GenPoly/FindFunction.cc
    1342 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po
    1343 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/FindFunction.cc' object='GenPoly/driver_cfa_cpp-FindFunction.o' libtool=no @AMDEPBACKSLASH@
    1344 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1345 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-FindFunction.o `test -f 'GenPoly/FindFunction.cc' || echo '$(srcdir)/'`GenPoly/FindFunction.cc
     1402@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-FindFunction.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo -c -o GenPoly/driver_cfa_cpp-FindFunction.o `test -f 'GenPoly/FindFunction.cc' || echo '$(srcdir)/'`GenPoly/FindFunction.cc
     1403@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po
     1404@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/FindFunction.cc' object='GenPoly/driver_cfa_cpp-FindFunction.o' libtool=no @AMDEPBACKSLASH@
     1405@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1406@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-FindFunction.o `test -f 'GenPoly/FindFunction.cc' || echo '$(srcdir)/'`GenPoly/FindFunction.cc
    13461407
    13471408GenPoly/driver_cfa_cpp-FindFunction.obj: GenPoly/FindFunction.cc
    1348 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-FindFunction.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo -c -o GenPoly/driver_cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi`
    1349 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po
    1350 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/FindFunction.cc' object='GenPoly/driver_cfa_cpp-FindFunction.obj' libtool=no @AMDEPBACKSLASH@
    1351 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1352 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi`
     1409@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-FindFunction.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo -c -o GenPoly/driver_cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi`
     1410@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po
     1411@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/FindFunction.cc' object='GenPoly/driver_cfa_cpp-FindFunction.obj' libtool=no @AMDEPBACKSLASH@
     1412@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1413@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi`
    13531414
    13541415GenPoly/driver_cfa_cpp-DeclMutator.o: GenPoly/DeclMutator.cc
    1355 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-DeclMutator.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo -c -o GenPoly/driver_cfa_cpp-DeclMutator.o `test -f 'GenPoly/DeclMutator.cc' || echo '$(srcdir)/'`GenPoly/DeclMutator.cc
    1356 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Po
    1357 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/DeclMutator.cc' object='GenPoly/driver_cfa_cpp-DeclMutator.o' libtool=no @AMDEPBACKSLASH@
    1358 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1359 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-DeclMutator.o `test -f 'GenPoly/DeclMutator.cc' || echo '$(srcdir)/'`GenPoly/DeclMutator.cc
     1416@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-DeclMutator.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo -c -o GenPoly/driver_cfa_cpp-DeclMutator.o `test -f 'GenPoly/DeclMutator.cc' || echo '$(srcdir)/'`GenPoly/DeclMutator.cc
     1417@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Po
     1418@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/DeclMutator.cc' object='GenPoly/driver_cfa_cpp-DeclMutator.o' libtool=no @AMDEPBACKSLASH@
     1419@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1420@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-DeclMutator.o `test -f 'GenPoly/DeclMutator.cc' || echo '$(srcdir)/'`GenPoly/DeclMutator.cc
    13601421
    13611422GenPoly/driver_cfa_cpp-DeclMutator.obj: GenPoly/DeclMutator.cc
    1362 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-DeclMutator.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo -c -o GenPoly/driver_cfa_cpp-DeclMutator.obj `if test -f 'GenPoly/DeclMutator.cc'; then $(CYGPATH_W) 'GenPoly/DeclMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/DeclMutator.cc'; fi`
    1363 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Po
    1364 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/DeclMutator.cc' object='GenPoly/driver_cfa_cpp-DeclMutator.obj' libtool=no @AMDEPBACKSLASH@
    1365 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1366 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-DeclMutator.obj `if test -f 'GenPoly/DeclMutator.cc'; then $(CYGPATH_W) 'GenPoly/DeclMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/DeclMutator.cc'; fi`
    1367 
    1368 InitTweak/driver_cfa_cpp-RemoveInit.o: InitTweak/RemoveInit.cc
    1369 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-RemoveInit.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-RemoveInit.Tpo -c -o InitTweak/driver_cfa_cpp-RemoveInit.o `test -f 'InitTweak/RemoveInit.cc' || echo '$(srcdir)/'`InitTweak/RemoveInit.cc
    1370 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-RemoveInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-RemoveInit.Po
    1371 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/RemoveInit.cc' object='InitTweak/driver_cfa_cpp-RemoveInit.o' libtool=no @AMDEPBACKSLASH@
    1372 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1373 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-RemoveInit.o `test -f 'InitTweak/RemoveInit.cc' || echo '$(srcdir)/'`InitTweak/RemoveInit.cc
    1374 
    1375 InitTweak/driver_cfa_cpp-RemoveInit.obj: InitTweak/RemoveInit.cc
    1376 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-RemoveInit.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-RemoveInit.Tpo -c -o InitTweak/driver_cfa_cpp-RemoveInit.obj `if test -f 'InitTweak/RemoveInit.cc'; then $(CYGPATH_W) 'InitTweak/RemoveInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/RemoveInit.cc'; fi`
    1377 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-RemoveInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-RemoveInit.Po
    1378 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/RemoveInit.cc' object='InitTweak/driver_cfa_cpp-RemoveInit.obj' libtool=no @AMDEPBACKSLASH@
    1379 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1380 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-RemoveInit.obj `if test -f 'InitTweak/RemoveInit.cc'; then $(CYGPATH_W) 'InitTweak/RemoveInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/RemoveInit.cc'; fi`
     1423@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-DeclMutator.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo -c -o GenPoly/driver_cfa_cpp-DeclMutator.obj `if test -f 'GenPoly/DeclMutator.cc'; then $(CYGPATH_W) 'GenPoly/DeclMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/DeclMutator.cc'; fi`
     1424@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Po
     1425@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/DeclMutator.cc' object='GenPoly/driver_cfa_cpp-DeclMutator.obj' libtool=no @AMDEPBACKSLASH@
     1426@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1427@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-DeclMutator.obj `if test -f 'GenPoly/DeclMutator.cc'; then $(CYGPATH_W) 'GenPoly/DeclMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/DeclMutator.cc'; fi`
     1428
     1429InitTweak/driver_cfa_cpp-GenInit.o: InitTweak/GenInit.cc
     1430@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-GenInit.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Tpo -c -o InitTweak/driver_cfa_cpp-GenInit.o `test -f 'InitTweak/GenInit.cc' || echo '$(srcdir)/'`InitTweak/GenInit.cc
     1431@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po
     1432@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/GenInit.cc' object='InitTweak/driver_cfa_cpp-GenInit.o' libtool=no @AMDEPBACKSLASH@
     1433@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1434@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-GenInit.o `test -f 'InitTweak/GenInit.cc' || echo '$(srcdir)/'`InitTweak/GenInit.cc
     1435
     1436InitTweak/driver_cfa_cpp-GenInit.obj: InitTweak/GenInit.cc
     1437@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-GenInit.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Tpo -c -o InitTweak/driver_cfa_cpp-GenInit.obj `if test -f 'InitTweak/GenInit.cc'; then $(CYGPATH_W) 'InitTweak/GenInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/GenInit.cc'; fi`
     1438@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po
     1439@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/GenInit.cc' object='InitTweak/driver_cfa_cpp-GenInit.obj' libtool=no @AMDEPBACKSLASH@
     1440@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1441@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-GenInit.obj `if test -f 'InitTweak/GenInit.cc'; then $(CYGPATH_W) 'InitTweak/GenInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/GenInit.cc'; fi`
     1442
     1443InitTweak/driver_cfa_cpp-FixInit.o: InitTweak/FixInit.cc
     1444@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-FixInit.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Tpo -c -o InitTweak/driver_cfa_cpp-FixInit.o `test -f 'InitTweak/FixInit.cc' || echo '$(srcdir)/'`InitTweak/FixInit.cc
     1445@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po
     1446@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/FixInit.cc' object='InitTweak/driver_cfa_cpp-FixInit.o' libtool=no @AMDEPBACKSLASH@
     1447@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1448@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-FixInit.o `test -f 'InitTweak/FixInit.cc' || echo '$(srcdir)/'`InitTweak/FixInit.cc
     1449
     1450InitTweak/driver_cfa_cpp-FixInit.obj: InitTweak/FixInit.cc
     1451@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-FixInit.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Tpo -c -o InitTweak/driver_cfa_cpp-FixInit.obj `if test -f 'InitTweak/FixInit.cc'; then $(CYGPATH_W) 'InitTweak/FixInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/FixInit.cc'; fi`
     1452@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po
     1453@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/FixInit.cc' object='InitTweak/driver_cfa_cpp-FixInit.obj' libtool=no @AMDEPBACKSLASH@
     1454@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1455@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-FixInit.obj `if test -f 'InitTweak/FixInit.cc'; then $(CYGPATH_W) 'InitTweak/FixInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/FixInit.cc'; fi`
     1456
     1457InitTweak/driver_cfa_cpp-FixGlobalInit.o: InitTweak/FixGlobalInit.cc
     1458@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-FixGlobalInit.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Tpo -c -o InitTweak/driver_cfa_cpp-FixGlobalInit.o `test -f 'InitTweak/FixGlobalInit.cc' || echo '$(srcdir)/'`InitTweak/FixGlobalInit.cc
     1459@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Po
     1460@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/FixGlobalInit.cc' object='InitTweak/driver_cfa_cpp-FixGlobalInit.o' libtool=no @AMDEPBACKSLASH@
     1461@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1462@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-FixGlobalInit.o `test -f 'InitTweak/FixGlobalInit.cc' || echo '$(srcdir)/'`InitTweak/FixGlobalInit.cc
     1463
     1464InitTweak/driver_cfa_cpp-FixGlobalInit.obj: InitTweak/FixGlobalInit.cc
     1465@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-FixGlobalInit.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Tpo -c -o InitTweak/driver_cfa_cpp-FixGlobalInit.obj `if test -f 'InitTweak/FixGlobalInit.cc'; then $(CYGPATH_W) 'InitTweak/FixGlobalInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/FixGlobalInit.cc'; fi`
     1466@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Po
     1467@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/FixGlobalInit.cc' object='InitTweak/driver_cfa_cpp-FixGlobalInit.obj' libtool=no @AMDEPBACKSLASH@
     1468@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1469@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-FixGlobalInit.obj `if test -f 'InitTweak/FixGlobalInit.cc'; then $(CYGPATH_W) 'InitTweak/FixGlobalInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/FixGlobalInit.cc'; fi`
     1470
     1471InitTweak/driver_cfa_cpp-InitTweak.o: InitTweak/InitTweak.cc
     1472@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-InitTweak.o -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo -c -o InitTweak/driver_cfa_cpp-InitTweak.o `test -f 'InitTweak/InitTweak.cc' || echo '$(srcdir)/'`InitTweak/InitTweak.cc
     1473@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po
     1474@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/InitTweak.cc' object='InitTweak/driver_cfa_cpp-InitTweak.o' libtool=no @AMDEPBACKSLASH@
     1475@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1476@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-InitTweak.o `test -f 'InitTweak/InitTweak.cc' || echo '$(srcdir)/'`InitTweak/InitTweak.cc
     1477
     1478InitTweak/driver_cfa_cpp-InitTweak.obj: InitTweak/InitTweak.cc
     1479@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/driver_cfa_cpp-InitTweak.obj -MD -MP -MF InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo -c -o InitTweak/driver_cfa_cpp-InitTweak.obj `if test -f 'InitTweak/InitTweak.cc'; then $(CYGPATH_W) 'InitTweak/InitTweak.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitTweak.cc'; fi`
     1480@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po
     1481@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/InitTweak.cc' object='InitTweak/driver_cfa_cpp-InitTweak.obj' libtool=no @AMDEPBACKSLASH@
     1482@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1483@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/driver_cfa_cpp-InitTweak.obj `if test -f 'InitTweak/InitTweak.cc'; then $(CYGPATH_W) 'InitTweak/InitTweak.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitTweak.cc'; fi`
    13811484
    13821485Parser/driver_cfa_cpp-parser.o: Parser/parser.cc
    1383 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parser.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo -c -o Parser/driver_cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
    1384 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parser.Po
    1385 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/parser.cc' object='Parser/driver_cfa_cpp-parser.o' libtool=no @AMDEPBACKSLASH@
    1386 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1387 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
     1486@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parser.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo -c -o Parser/driver_cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
     1487@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parser.Po
     1488@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/parser.cc' object='Parser/driver_cfa_cpp-parser.o' libtool=no @AMDEPBACKSLASH@
     1489@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1490@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
    13881491
    13891492Parser/driver_cfa_cpp-parser.obj: Parser/parser.cc
    1390 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parser.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo -c -o Parser/driver_cfa_cpp-parser.obj `if test -f 'Parser/parser.cc'; then $(CYGPATH_W) 'Parser/parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parser.cc'; fi`
    1391 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parser.Po
    1392 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/parser.cc' object='Parser/driver_cfa_cpp-parser.obj' libtool=no @AMDEPBACKSLASH@
    1393 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1394 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parser.obj `if test -f 'Parser/parser.cc'; then $(CYGPATH_W) 'Parser/parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parser.cc'; fi`
     1493@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parser.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo -c -o Parser/driver_cfa_cpp-parser.obj `if test -f 'Parser/parser.cc'; then $(CYGPATH_W) 'Parser/parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parser.cc'; fi`
     1494@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parser.Po
     1495@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/parser.cc' object='Parser/driver_cfa_cpp-parser.obj' libtool=no @AMDEPBACKSLASH@
     1496@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1497@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parser.obj `if test -f 'Parser/parser.cc'; then $(CYGPATH_W) 'Parser/parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parser.cc'; fi`
    13951498
    13961499Parser/driver_cfa_cpp-lex.o: Parser/lex.cc
    1397 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-lex.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo -c -o Parser/driver_cfa_cpp-lex.o `test -f 'Parser/lex.cc' || echo '$(srcdir)/'`Parser/lex.cc
    1398 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-lex.Po
    1399 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/lex.cc' object='Parser/driver_cfa_cpp-lex.o' libtool=no @AMDEPBACKSLASH@
    1400 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1401 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-lex.o `test -f 'Parser/lex.cc' || echo '$(srcdir)/'`Parser/lex.cc
     1500@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-lex.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo -c -o Parser/driver_cfa_cpp-lex.o `test -f 'Parser/lex.cc' || echo '$(srcdir)/'`Parser/lex.cc
     1501@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-lex.Po
     1502@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/lex.cc' object='Parser/driver_cfa_cpp-lex.o' libtool=no @AMDEPBACKSLASH@
     1503@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1504@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-lex.o `test -f 'Parser/lex.cc' || echo '$(srcdir)/'`Parser/lex.cc
    14021505
    14031506Parser/driver_cfa_cpp-lex.obj: Parser/lex.cc
    1404 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-lex.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo -c -o Parser/driver_cfa_cpp-lex.obj `if test -f 'Parser/lex.cc'; then $(CYGPATH_W) 'Parser/lex.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/lex.cc'; fi`
    1405 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-lex.Po
    1406 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/lex.cc' object='Parser/driver_cfa_cpp-lex.obj' libtool=no @AMDEPBACKSLASH@
    1407 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1408 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-lex.obj `if test -f 'Parser/lex.cc'; then $(CYGPATH_W) 'Parser/lex.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/lex.cc'; fi`
     1507@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-lex.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo -c -o Parser/driver_cfa_cpp-lex.obj `if test -f 'Parser/lex.cc'; then $(CYGPATH_W) 'Parser/lex.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/lex.cc'; fi`
     1508@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-lex.Po
     1509@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/lex.cc' object='Parser/driver_cfa_cpp-lex.obj' libtool=no @AMDEPBACKSLASH@
     1510@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1511@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-lex.obj `if test -f 'Parser/lex.cc'; then $(CYGPATH_W) 'Parser/lex.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/lex.cc'; fi`
    14091512
    14101513Parser/driver_cfa_cpp-TypedefTable.o: Parser/TypedefTable.cc
    1411 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypedefTable.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo -c -o Parser/driver_cfa_cpp-TypedefTable.o `test -f 'Parser/TypedefTable.cc' || echo '$(srcdir)/'`Parser/TypedefTable.cc
    1412 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Po
    1413 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/TypedefTable.cc' object='Parser/driver_cfa_cpp-TypedefTable.o' libtool=no @AMDEPBACKSLASH@
    1414 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1415 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypedefTable.o `test -f 'Parser/TypedefTable.cc' || echo '$(srcdir)/'`Parser/TypedefTable.cc
     1514@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypedefTable.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo -c -o Parser/driver_cfa_cpp-TypedefTable.o `test -f 'Parser/TypedefTable.cc' || echo '$(srcdir)/'`Parser/TypedefTable.cc
     1515@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Po
     1516@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/TypedefTable.cc' object='Parser/driver_cfa_cpp-TypedefTable.o' libtool=no @AMDEPBACKSLASH@
     1517@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1518@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypedefTable.o `test -f 'Parser/TypedefTable.cc' || echo '$(srcdir)/'`Parser/TypedefTable.cc
    14161519
    14171520Parser/driver_cfa_cpp-TypedefTable.obj: Parser/TypedefTable.cc
    1418 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypedefTable.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo -c -o Parser/driver_cfa_cpp-TypedefTable.obj `if test -f 'Parser/TypedefTable.cc'; then $(CYGPATH_W) 'Parser/TypedefTable.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypedefTable.cc'; fi`
    1419 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Po
    1420 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/TypedefTable.cc' object='Parser/driver_cfa_cpp-TypedefTable.obj' libtool=no @AMDEPBACKSLASH@
    1421 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1422 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypedefTable.obj `if test -f 'Parser/TypedefTable.cc'; then $(CYGPATH_W) 'Parser/TypedefTable.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypedefTable.cc'; fi`
     1521@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypedefTable.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo -c -o Parser/driver_cfa_cpp-TypedefTable.obj `if test -f 'Parser/TypedefTable.cc'; then $(CYGPATH_W) 'Parser/TypedefTable.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypedefTable.cc'; fi`
     1522@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Po
     1523@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/TypedefTable.cc' object='Parser/driver_cfa_cpp-TypedefTable.obj' libtool=no @AMDEPBACKSLASH@
     1524@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1525@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypedefTable.obj `if test -f 'Parser/TypedefTable.cc'; then $(CYGPATH_W) 'Parser/TypedefTable.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypedefTable.cc'; fi`
    14231526
    14241527Parser/driver_cfa_cpp-ParseNode.o: Parser/ParseNode.cc
    1425 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ParseNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo -c -o Parser/driver_cfa_cpp-ParseNode.o `test -f 'Parser/ParseNode.cc' || echo '$(srcdir)/'`Parser/ParseNode.cc
    1426 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po
    1427 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/ParseNode.cc' object='Parser/driver_cfa_cpp-ParseNode.o' libtool=no @AMDEPBACKSLASH@
    1428 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1429 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ParseNode.o `test -f 'Parser/ParseNode.cc' || echo '$(srcdir)/'`Parser/ParseNode.cc
     1528@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ParseNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo -c -o Parser/driver_cfa_cpp-ParseNode.o `test -f 'Parser/ParseNode.cc' || echo '$(srcdir)/'`Parser/ParseNode.cc
     1529@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po
     1530@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/ParseNode.cc' object='Parser/driver_cfa_cpp-ParseNode.o' libtool=no @AMDEPBACKSLASH@
     1531@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1532@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ParseNode.o `test -f 'Parser/ParseNode.cc' || echo '$(srcdir)/'`Parser/ParseNode.cc
    14301533
    14311534Parser/driver_cfa_cpp-ParseNode.obj: Parser/ParseNode.cc
    1432 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ParseNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo -c -o Parser/driver_cfa_cpp-ParseNode.obj `if test -f 'Parser/ParseNode.cc'; then $(CYGPATH_W) 'Parser/ParseNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ParseNode.cc'; fi`
    1433 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po
    1434 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/ParseNode.cc' object='Parser/driver_cfa_cpp-ParseNode.obj' libtool=no @AMDEPBACKSLASH@
    1435 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1436 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ParseNode.obj `if test -f 'Parser/ParseNode.cc'; then $(CYGPATH_W) 'Parser/ParseNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ParseNode.cc'; fi`
     1535@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ParseNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo -c -o Parser/driver_cfa_cpp-ParseNode.obj `if test -f 'Parser/ParseNode.cc'; then $(CYGPATH_W) 'Parser/ParseNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ParseNode.cc'; fi`
     1536@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po
     1537@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/ParseNode.cc' object='Parser/driver_cfa_cpp-ParseNode.obj' libtool=no @AMDEPBACKSLASH@
     1538@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1539@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ParseNode.obj `if test -f 'Parser/ParseNode.cc'; then $(CYGPATH_W) 'Parser/ParseNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ParseNode.cc'; fi`
    14371540
    14381541Parser/driver_cfa_cpp-DeclarationNode.o: Parser/DeclarationNode.cc
    1439 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-DeclarationNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo -c -o Parser/driver_cfa_cpp-DeclarationNode.o `test -f 'Parser/DeclarationNode.cc' || echo '$(srcdir)/'`Parser/DeclarationNode.cc
    1440 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po
    1441 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/DeclarationNode.cc' object='Parser/driver_cfa_cpp-DeclarationNode.o' libtool=no @AMDEPBACKSLASH@
    1442 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1443 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-DeclarationNode.o `test -f 'Parser/DeclarationNode.cc' || echo '$(srcdir)/'`Parser/DeclarationNode.cc
     1542@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-DeclarationNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo -c -o Parser/driver_cfa_cpp-DeclarationNode.o `test -f 'Parser/DeclarationNode.cc' || echo '$(srcdir)/'`Parser/DeclarationNode.cc
     1543@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po
     1544@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/DeclarationNode.cc' object='Parser/driver_cfa_cpp-DeclarationNode.o' libtool=no @AMDEPBACKSLASH@
     1545@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1546@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-DeclarationNode.o `test -f 'Parser/DeclarationNode.cc' || echo '$(srcdir)/'`Parser/DeclarationNode.cc
    14441547
    14451548Parser/driver_cfa_cpp-DeclarationNode.obj: Parser/DeclarationNode.cc
    1446 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-DeclarationNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo -c -o Parser/driver_cfa_cpp-DeclarationNode.obj `if test -f 'Parser/DeclarationNode.cc'; then $(CYGPATH_W) 'Parser/DeclarationNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/DeclarationNode.cc'; fi`
    1447 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po
    1448 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/DeclarationNode.cc' object='Parser/driver_cfa_cpp-DeclarationNode.obj' libtool=no @AMDEPBACKSLASH@
    1449 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1450 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-DeclarationNode.obj `if test -f 'Parser/DeclarationNode.cc'; then $(CYGPATH_W) 'Parser/DeclarationNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/DeclarationNode.cc'; fi`
     1549@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-DeclarationNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo -c -o Parser/driver_cfa_cpp-DeclarationNode.obj `if test -f 'Parser/DeclarationNode.cc'; then $(CYGPATH_W) 'Parser/DeclarationNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/DeclarationNode.cc'; fi`
     1550@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po
     1551@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/DeclarationNode.cc' object='Parser/driver_cfa_cpp-DeclarationNode.obj' libtool=no @AMDEPBACKSLASH@
     1552@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1553@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-DeclarationNode.obj `if test -f 'Parser/DeclarationNode.cc'; then $(CYGPATH_W) 'Parser/DeclarationNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/DeclarationNode.cc'; fi`
    14511554
    14521555Parser/driver_cfa_cpp-ExpressionNode.o: Parser/ExpressionNode.cc
    1453 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ExpressionNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo -c -o Parser/driver_cfa_cpp-ExpressionNode.o `test -f 'Parser/ExpressionNode.cc' || echo '$(srcdir)/'`Parser/ExpressionNode.cc
    1454 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po
    1455 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/ExpressionNode.cc' object='Parser/driver_cfa_cpp-ExpressionNode.o' libtool=no @AMDEPBACKSLASH@
    1456 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1457 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ExpressionNode.o `test -f 'Parser/ExpressionNode.cc' || echo '$(srcdir)/'`Parser/ExpressionNode.cc
     1556@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ExpressionNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo -c -o Parser/driver_cfa_cpp-ExpressionNode.o `test -f 'Parser/ExpressionNode.cc' || echo '$(srcdir)/'`Parser/ExpressionNode.cc
     1557@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po
     1558@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/ExpressionNode.cc' object='Parser/driver_cfa_cpp-ExpressionNode.o' libtool=no @AMDEPBACKSLASH@
     1559@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1560@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ExpressionNode.o `test -f 'Parser/ExpressionNode.cc' || echo '$(srcdir)/'`Parser/ExpressionNode.cc
    14581561
    14591562Parser/driver_cfa_cpp-ExpressionNode.obj: Parser/ExpressionNode.cc
    1460 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ExpressionNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo -c -o Parser/driver_cfa_cpp-ExpressionNode.obj `if test -f 'Parser/ExpressionNode.cc'; then $(CYGPATH_W) 'Parser/ExpressionNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ExpressionNode.cc'; fi`
    1461 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po
    1462 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/ExpressionNode.cc' object='Parser/driver_cfa_cpp-ExpressionNode.obj' libtool=no @AMDEPBACKSLASH@
    1463 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1464 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ExpressionNode.obj `if test -f 'Parser/ExpressionNode.cc'; then $(CYGPATH_W) 'Parser/ExpressionNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ExpressionNode.cc'; fi`
     1563@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-ExpressionNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo -c -o Parser/driver_cfa_cpp-ExpressionNode.obj `if test -f 'Parser/ExpressionNode.cc'; then $(CYGPATH_W) 'Parser/ExpressionNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ExpressionNode.cc'; fi`
     1564@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po
     1565@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/ExpressionNode.cc' object='Parser/driver_cfa_cpp-ExpressionNode.obj' libtool=no @AMDEPBACKSLASH@
     1566@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1567@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-ExpressionNode.obj `if test -f 'Parser/ExpressionNode.cc'; then $(CYGPATH_W) 'Parser/ExpressionNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ExpressionNode.cc'; fi`
    14651568
    14661569Parser/driver_cfa_cpp-StatementNode.o: Parser/StatementNode.cc
    1467 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-StatementNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo -c -o Parser/driver_cfa_cpp-StatementNode.o `test -f 'Parser/StatementNode.cc' || echo '$(srcdir)/'`Parser/StatementNode.cc
    1468 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po
    1469 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/StatementNode.cc' object='Parser/driver_cfa_cpp-StatementNode.o' libtool=no @AMDEPBACKSLASH@
    1470 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1471 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-StatementNode.o `test -f 'Parser/StatementNode.cc' || echo '$(srcdir)/'`Parser/StatementNode.cc
     1570@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-StatementNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo -c -o Parser/driver_cfa_cpp-StatementNode.o `test -f 'Parser/StatementNode.cc' || echo '$(srcdir)/'`Parser/StatementNode.cc
     1571@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po
     1572@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/StatementNode.cc' object='Parser/driver_cfa_cpp-StatementNode.o' libtool=no @AMDEPBACKSLASH@
     1573@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1574@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-StatementNode.o `test -f 'Parser/StatementNode.cc' || echo '$(srcdir)/'`Parser/StatementNode.cc
    14721575
    14731576Parser/driver_cfa_cpp-StatementNode.obj: Parser/StatementNode.cc
    1474 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-StatementNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo -c -o Parser/driver_cfa_cpp-StatementNode.obj `if test -f 'Parser/StatementNode.cc'; then $(CYGPATH_W) 'Parser/StatementNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/StatementNode.cc'; fi`
    1475 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po
    1476 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/StatementNode.cc' object='Parser/driver_cfa_cpp-StatementNode.obj' libtool=no @AMDEPBACKSLASH@
    1477 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1478 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-StatementNode.obj `if test -f 'Parser/StatementNode.cc'; then $(CYGPATH_W) 'Parser/StatementNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/StatementNode.cc'; fi`
     1577@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-StatementNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo -c -o Parser/driver_cfa_cpp-StatementNode.obj `if test -f 'Parser/StatementNode.cc'; then $(CYGPATH_W) 'Parser/StatementNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/StatementNode.cc'; fi`
     1578@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po
     1579@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/StatementNode.cc' object='Parser/driver_cfa_cpp-StatementNode.obj' libtool=no @AMDEPBACKSLASH@
     1580@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1581@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-StatementNode.obj `if test -f 'Parser/StatementNode.cc'; then $(CYGPATH_W) 'Parser/StatementNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/StatementNode.cc'; fi`
    14791582
    14801583Parser/driver_cfa_cpp-InitializerNode.o: Parser/InitializerNode.cc
    1481 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-InitializerNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo -c -o Parser/driver_cfa_cpp-InitializerNode.o `test -f 'Parser/InitializerNode.cc' || echo '$(srcdir)/'`Parser/InitializerNode.cc
    1482 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Po
    1483 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/InitializerNode.cc' object='Parser/driver_cfa_cpp-InitializerNode.o' libtool=no @AMDEPBACKSLASH@
    1484 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1485 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-InitializerNode.o `test -f 'Parser/InitializerNode.cc' || echo '$(srcdir)/'`Parser/InitializerNode.cc
     1584@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-InitializerNode.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo -c -o Parser/driver_cfa_cpp-InitializerNode.o `test -f 'Parser/InitializerNode.cc' || echo '$(srcdir)/'`Parser/InitializerNode.cc
     1585@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Po
     1586@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/InitializerNode.cc' object='Parser/driver_cfa_cpp-InitializerNode.o' libtool=no @AMDEPBACKSLASH@
     1587@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1588@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-InitializerNode.o `test -f 'Parser/InitializerNode.cc' || echo '$(srcdir)/'`Parser/InitializerNode.cc
    14861589
    14871590Parser/driver_cfa_cpp-InitializerNode.obj: Parser/InitializerNode.cc
    1488 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-InitializerNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo -c -o Parser/driver_cfa_cpp-InitializerNode.obj `if test -f 'Parser/InitializerNode.cc'; then $(CYGPATH_W) 'Parser/InitializerNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/InitializerNode.cc'; fi`
    1489 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Po
    1490 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/InitializerNode.cc' object='Parser/driver_cfa_cpp-InitializerNode.obj' libtool=no @AMDEPBACKSLASH@
    1491 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1492 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-InitializerNode.obj `if test -f 'Parser/InitializerNode.cc'; then $(CYGPATH_W) 'Parser/InitializerNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/InitializerNode.cc'; fi`
     1591@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-InitializerNode.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo -c -o Parser/driver_cfa_cpp-InitializerNode.obj `if test -f 'Parser/InitializerNode.cc'; then $(CYGPATH_W) 'Parser/InitializerNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/InitializerNode.cc'; fi`
     1592@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Po
     1593@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/InitializerNode.cc' object='Parser/driver_cfa_cpp-InitializerNode.obj' libtool=no @AMDEPBACKSLASH@
     1594@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1595@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-InitializerNode.obj `if test -f 'Parser/InitializerNode.cc'; then $(CYGPATH_W) 'Parser/InitializerNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/InitializerNode.cc'; fi`
    14931596
    14941597Parser/driver_cfa_cpp-TypeData.o: Parser/TypeData.cc
    1495 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypeData.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo -c -o Parser/driver_cfa_cpp-TypeData.o `test -f 'Parser/TypeData.cc' || echo '$(srcdir)/'`Parser/TypeData.cc
    1496 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po
    1497 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/TypeData.cc' object='Parser/driver_cfa_cpp-TypeData.o' libtool=no @AMDEPBACKSLASH@
    1498 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1499 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypeData.o `test -f 'Parser/TypeData.cc' || echo '$(srcdir)/'`Parser/TypeData.cc
     1598@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypeData.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo -c -o Parser/driver_cfa_cpp-TypeData.o `test -f 'Parser/TypeData.cc' || echo '$(srcdir)/'`Parser/TypeData.cc
     1599@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po
     1600@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/TypeData.cc' object='Parser/driver_cfa_cpp-TypeData.o' libtool=no @AMDEPBACKSLASH@
     1601@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1602@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypeData.o `test -f 'Parser/TypeData.cc' || echo '$(srcdir)/'`Parser/TypeData.cc
    15001603
    15011604Parser/driver_cfa_cpp-TypeData.obj: Parser/TypeData.cc
    1502 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypeData.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo -c -o Parser/driver_cfa_cpp-TypeData.obj `if test -f 'Parser/TypeData.cc'; then $(CYGPATH_W) 'Parser/TypeData.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypeData.cc'; fi`
    1503 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po
    1504 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/TypeData.cc' object='Parser/driver_cfa_cpp-TypeData.obj' libtool=no @AMDEPBACKSLASH@
    1505 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1506 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypeData.obj `if test -f 'Parser/TypeData.cc'; then $(CYGPATH_W) 'Parser/TypeData.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypeData.cc'; fi`
     1605@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-TypeData.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo -c -o Parser/driver_cfa_cpp-TypeData.obj `if test -f 'Parser/TypeData.cc'; then $(CYGPATH_W) 'Parser/TypeData.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypeData.cc'; fi`
     1606@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po
     1607@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/TypeData.cc' object='Parser/driver_cfa_cpp-TypeData.obj' libtool=no @AMDEPBACKSLASH@
     1608@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1609@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-TypeData.obj `if test -f 'Parser/TypeData.cc'; then $(CYGPATH_W) 'Parser/TypeData.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypeData.cc'; fi`
    15071610
    15081611Parser/driver_cfa_cpp-LinkageSpec.o: Parser/LinkageSpec.cc
    1509 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-LinkageSpec.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo -c -o Parser/driver_cfa_cpp-LinkageSpec.o `test -f 'Parser/LinkageSpec.cc' || echo '$(srcdir)/'`Parser/LinkageSpec.cc
    1510 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po
    1511 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/LinkageSpec.cc' object='Parser/driver_cfa_cpp-LinkageSpec.o' libtool=no @AMDEPBACKSLASH@
    1512 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1513 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-LinkageSpec.o `test -f 'Parser/LinkageSpec.cc' || echo '$(srcdir)/'`Parser/LinkageSpec.cc
     1612@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-LinkageSpec.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo -c -o Parser/driver_cfa_cpp-LinkageSpec.o `test -f 'Parser/LinkageSpec.cc' || echo '$(srcdir)/'`Parser/LinkageSpec.cc
     1613@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po
     1614@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/LinkageSpec.cc' object='Parser/driver_cfa_cpp-LinkageSpec.o' libtool=no @AMDEPBACKSLASH@
     1615@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1616@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-LinkageSpec.o `test -f 'Parser/LinkageSpec.cc' || echo '$(srcdir)/'`Parser/LinkageSpec.cc
    15141617
    15151618Parser/driver_cfa_cpp-LinkageSpec.obj: Parser/LinkageSpec.cc
    1516 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-LinkageSpec.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo -c -o Parser/driver_cfa_cpp-LinkageSpec.obj `if test -f 'Parser/LinkageSpec.cc'; then $(CYGPATH_W) 'Parser/LinkageSpec.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/LinkageSpec.cc'; fi`
    1517 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po
    1518 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/LinkageSpec.cc' object='Parser/driver_cfa_cpp-LinkageSpec.obj' libtool=no @AMDEPBACKSLASH@
    1519 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1520 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-LinkageSpec.obj `if test -f 'Parser/LinkageSpec.cc'; then $(CYGPATH_W) 'Parser/LinkageSpec.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/LinkageSpec.cc'; fi`
     1619@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-LinkageSpec.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo -c -o Parser/driver_cfa_cpp-LinkageSpec.obj `if test -f 'Parser/LinkageSpec.cc'; then $(CYGPATH_W) 'Parser/LinkageSpec.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/LinkageSpec.cc'; fi`
     1620@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po
     1621@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/LinkageSpec.cc' object='Parser/driver_cfa_cpp-LinkageSpec.obj' libtool=no @AMDEPBACKSLASH@
     1622@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1623@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-LinkageSpec.obj `if test -f 'Parser/LinkageSpec.cc'; then $(CYGPATH_W) 'Parser/LinkageSpec.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/LinkageSpec.cc'; fi`
    15211624
    15221625Parser/driver_cfa_cpp-parseutility.o: Parser/parseutility.cc
    1523 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parseutility.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Tpo -c -o Parser/driver_cfa_cpp-parseutility.o `test -f 'Parser/parseutility.cc' || echo '$(srcdir)/'`Parser/parseutility.cc
    1524 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Po
    1525 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/parseutility.cc' object='Parser/driver_cfa_cpp-parseutility.o' libtool=no @AMDEPBACKSLASH@
    1526 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1527 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parseutility.o `test -f 'Parser/parseutility.cc' || echo '$(srcdir)/'`Parser/parseutility.cc
     1626@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parseutility.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Tpo -c -o Parser/driver_cfa_cpp-parseutility.o `test -f 'Parser/parseutility.cc' || echo '$(srcdir)/'`Parser/parseutility.cc
     1627@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Po
     1628@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/parseutility.cc' object='Parser/driver_cfa_cpp-parseutility.o' libtool=no @AMDEPBACKSLASH@
     1629@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1630@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parseutility.o `test -f 'Parser/parseutility.cc' || echo '$(srcdir)/'`Parser/parseutility.cc
    15281631
    15291632Parser/driver_cfa_cpp-parseutility.obj: Parser/parseutility.cc
    1530 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parseutility.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Tpo -c -o Parser/driver_cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi`
    1531 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Po
    1532 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/parseutility.cc' object='Parser/driver_cfa_cpp-parseutility.obj' libtool=no @AMDEPBACKSLASH@
    1533 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1534 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi`
     1633@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-parseutility.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Tpo -c -o Parser/driver_cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi`
     1634@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Po
     1635@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/parseutility.cc' object='Parser/driver_cfa_cpp-parseutility.obj' libtool=no @AMDEPBACKSLASH@
     1636@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1637@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi`
    15351638
    15361639Parser/driver_cfa_cpp-Parser.o: Parser/Parser.cc
    1537 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-Parser.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo -c -o Parser/driver_cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
    1538 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po
    1539 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.o' libtool=no @AMDEPBACKSLASH@
    1540 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1541 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
     1640@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-Parser.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo -c -o Parser/driver_cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
     1641@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po
     1642@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.o' libtool=no @AMDEPBACKSLASH@
     1643@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1644@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
    15421645
    15431646Parser/driver_cfa_cpp-Parser.obj: Parser/Parser.cc
    1544 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-Parser.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo -c -o Parser/driver_cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
    1545 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po
    1546 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.obj' libtool=no @AMDEPBACKSLASH@
    1547 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1548 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
     1647@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-Parser.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo -c -o Parser/driver_cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
     1648@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po
     1649@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.obj' libtool=no @AMDEPBACKSLASH@
     1650@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1651@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
    15491652
    15501653ResolvExpr/driver_cfa_cpp-AlternativeFinder.o: ResolvExpr/AlternativeFinder.cc
    1551 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativeFinder.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.o `test -f 'ResolvExpr/AlternativeFinder.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativeFinder.cc
    1552 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Po
    1553 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/driver_cfa_cpp-AlternativeFinder.o' libtool=no @AMDEPBACKSLASH@
    1554 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1555 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.o `test -f 'ResolvExpr/AlternativeFinder.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativeFinder.cc
     1654@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativeFinder.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.o `test -f 'ResolvExpr/AlternativeFinder.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativeFinder.cc
     1655@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Po
     1656@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/driver_cfa_cpp-AlternativeFinder.o' libtool=no @AMDEPBACKSLASH@
     1657@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1658@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.o `test -f 'ResolvExpr/AlternativeFinder.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativeFinder.cc
    15561659
    15571660ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj: ResolvExpr/AlternativeFinder.cc
    1558 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj `if test -f 'ResolvExpr/AlternativeFinder.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativeFinder.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativeFinder.cc'; fi`
    1559 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Po
    1560 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj' libtool=no @AMDEPBACKSLASH@
    1561 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1562 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj `if test -f 'ResolvExpr/AlternativeFinder.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativeFinder.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativeFinder.cc'; fi`
     1661@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj `if test -f 'ResolvExpr/AlternativeFinder.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativeFinder.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativeFinder.cc'; fi`
     1662@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Po
     1663@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj' libtool=no @AMDEPBACKSLASH@
     1664@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1665@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj `if test -f 'ResolvExpr/AlternativeFinder.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativeFinder.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativeFinder.cc'; fi`
    15631666
    15641667ResolvExpr/driver_cfa_cpp-Alternative.o: ResolvExpr/Alternative.cc
    1565 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Alternative.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo -c -o ResolvExpr/driver_cfa_cpp-Alternative.o `test -f 'ResolvExpr/Alternative.cc' || echo '$(srcdir)/'`ResolvExpr/Alternative.cc
    1566 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Po
    1567 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Alternative.cc' object='ResolvExpr/driver_cfa_cpp-Alternative.o' libtool=no @AMDEPBACKSLASH@
    1568 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1569 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Alternative.o `test -f 'ResolvExpr/Alternative.cc' || echo '$(srcdir)/'`ResolvExpr/Alternative.cc
     1668@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Alternative.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo -c -o ResolvExpr/driver_cfa_cpp-Alternative.o `test -f 'ResolvExpr/Alternative.cc' || echo '$(srcdir)/'`ResolvExpr/Alternative.cc
     1669@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Po
     1670@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Alternative.cc' object='ResolvExpr/driver_cfa_cpp-Alternative.o' libtool=no @AMDEPBACKSLASH@
     1671@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1672@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Alternative.o `test -f 'ResolvExpr/Alternative.cc' || echo '$(srcdir)/'`ResolvExpr/Alternative.cc
    15701673
    15711674ResolvExpr/driver_cfa_cpp-Alternative.obj: ResolvExpr/Alternative.cc
    1572 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Alternative.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo -c -o ResolvExpr/driver_cfa_cpp-Alternative.obj `if test -f 'ResolvExpr/Alternative.cc'; then $(CYGPATH_W) 'ResolvExpr/Alternative.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Alternative.cc'; fi`
    1573 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Po
    1574 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Alternative.cc' object='ResolvExpr/driver_cfa_cpp-Alternative.obj' libtool=no @AMDEPBACKSLASH@
    1575 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1576 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Alternative.obj `if test -f 'ResolvExpr/Alternative.cc'; then $(CYGPATH_W) 'ResolvExpr/Alternative.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Alternative.cc'; fi`
     1675@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Alternative.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo -c -o ResolvExpr/driver_cfa_cpp-Alternative.obj `if test -f 'ResolvExpr/Alternative.cc'; then $(CYGPATH_W) 'ResolvExpr/Alternative.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Alternative.cc'; fi`
     1676@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Po
     1677@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Alternative.cc' object='ResolvExpr/driver_cfa_cpp-Alternative.obj' libtool=no @AMDEPBACKSLASH@
     1678@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1679@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Alternative.obj `if test -f 'ResolvExpr/Alternative.cc'; then $(CYGPATH_W) 'ResolvExpr/Alternative.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Alternative.cc'; fi`
    15771680
    15781681ResolvExpr/driver_cfa_cpp-Unify.o: ResolvExpr/Unify.cc
    1579 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Unify.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo -c -o ResolvExpr/driver_cfa_cpp-Unify.o `test -f 'ResolvExpr/Unify.cc' || echo '$(srcdir)/'`ResolvExpr/Unify.cc
    1580 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po
    1581 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Unify.cc' object='ResolvExpr/driver_cfa_cpp-Unify.o' libtool=no @AMDEPBACKSLASH@
    1582 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1583 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Unify.o `test -f 'ResolvExpr/Unify.cc' || echo '$(srcdir)/'`ResolvExpr/Unify.cc
     1682@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Unify.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo -c -o ResolvExpr/driver_cfa_cpp-Unify.o `test -f 'ResolvExpr/Unify.cc' || echo '$(srcdir)/'`ResolvExpr/Unify.cc
     1683@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po
     1684@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Unify.cc' object='ResolvExpr/driver_cfa_cpp-Unify.o' libtool=no @AMDEPBACKSLASH@
     1685@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1686@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Unify.o `test -f 'ResolvExpr/Unify.cc' || echo '$(srcdir)/'`ResolvExpr/Unify.cc
    15841687
    15851688ResolvExpr/driver_cfa_cpp-Unify.obj: ResolvExpr/Unify.cc
    1586 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Unify.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo -c -o ResolvExpr/driver_cfa_cpp-Unify.obj `if test -f 'ResolvExpr/Unify.cc'; then $(CYGPATH_W) 'ResolvExpr/Unify.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Unify.cc'; fi`
    1587 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po
    1588 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Unify.cc' object='ResolvExpr/driver_cfa_cpp-Unify.obj' libtool=no @AMDEPBACKSLASH@
    1589 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1590 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Unify.obj `if test -f 'ResolvExpr/Unify.cc'; then $(CYGPATH_W) 'ResolvExpr/Unify.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Unify.cc'; fi`
     1689@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Unify.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo -c -o ResolvExpr/driver_cfa_cpp-Unify.obj `if test -f 'ResolvExpr/Unify.cc'; then $(CYGPATH_W) 'ResolvExpr/Unify.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Unify.cc'; fi`
     1690@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po
     1691@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Unify.cc' object='ResolvExpr/driver_cfa_cpp-Unify.obj' libtool=no @AMDEPBACKSLASH@
     1692@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1693@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Unify.obj `if test -f 'ResolvExpr/Unify.cc'; then $(CYGPATH_W) 'ResolvExpr/Unify.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Unify.cc'; fi`
    15911694
    15921695ResolvExpr/driver_cfa_cpp-PtrsAssignable.o: ResolvExpr/PtrsAssignable.cc
    1593 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsAssignable.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.o `test -f 'ResolvExpr/PtrsAssignable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsAssignable.cc
    1594 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Po
    1595 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsAssignable.o' libtool=no @AMDEPBACKSLASH@
    1596 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1597 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.o `test -f 'ResolvExpr/PtrsAssignable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsAssignable.cc
     1696@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsAssignable.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.o `test -f 'ResolvExpr/PtrsAssignable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsAssignable.cc
     1697@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Po
     1698@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsAssignable.o' libtool=no @AMDEPBACKSLASH@
     1699@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1700@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.o `test -f 'ResolvExpr/PtrsAssignable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsAssignable.cc
    15981701
    15991702ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj: ResolvExpr/PtrsAssignable.cc
    1600 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj `if test -f 'ResolvExpr/PtrsAssignable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsAssignable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsAssignable.cc'; fi`
    1601 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Po
    1602 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj' libtool=no @AMDEPBACKSLASH@
    1603 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1604 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj `if test -f 'ResolvExpr/PtrsAssignable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsAssignable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsAssignable.cc'; fi`
     1703@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj `if test -f 'ResolvExpr/PtrsAssignable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsAssignable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsAssignable.cc'; fi`
     1704@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Po
     1705@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj' libtool=no @AMDEPBACKSLASH@
     1706@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1707@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj `if test -f 'ResolvExpr/PtrsAssignable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsAssignable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsAssignable.cc'; fi`
    16051708
    16061709ResolvExpr/driver_cfa_cpp-CommonType.o: ResolvExpr/CommonType.cc
    1607 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CommonType.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo -c -o ResolvExpr/driver_cfa_cpp-CommonType.o `test -f 'ResolvExpr/CommonType.cc' || echo '$(srcdir)/'`ResolvExpr/CommonType.cc
    1608 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Po
    1609 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/CommonType.cc' object='ResolvExpr/driver_cfa_cpp-CommonType.o' libtool=no @AMDEPBACKSLASH@
    1610 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1611 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CommonType.o `test -f 'ResolvExpr/CommonType.cc' || echo '$(srcdir)/'`ResolvExpr/CommonType.cc
     1710@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CommonType.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo -c -o ResolvExpr/driver_cfa_cpp-CommonType.o `test -f 'ResolvExpr/CommonType.cc' || echo '$(srcdir)/'`ResolvExpr/CommonType.cc
     1711@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Po
     1712@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/CommonType.cc' object='ResolvExpr/driver_cfa_cpp-CommonType.o' libtool=no @AMDEPBACKSLASH@
     1713@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1714@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CommonType.o `test -f 'ResolvExpr/CommonType.cc' || echo '$(srcdir)/'`ResolvExpr/CommonType.cc
    16121715
    16131716ResolvExpr/driver_cfa_cpp-CommonType.obj: ResolvExpr/CommonType.cc
    1614 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CommonType.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo -c -o ResolvExpr/driver_cfa_cpp-CommonType.obj `if test -f 'ResolvExpr/CommonType.cc'; then $(CYGPATH_W) 'ResolvExpr/CommonType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CommonType.cc'; fi`
    1615 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Po
    1616 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/CommonType.cc' object='ResolvExpr/driver_cfa_cpp-CommonType.obj' libtool=no @AMDEPBACKSLASH@
    1617 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1618 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CommonType.obj `if test -f 'ResolvExpr/CommonType.cc'; then $(CYGPATH_W) 'ResolvExpr/CommonType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CommonType.cc'; fi`
     1717@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CommonType.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo -c -o ResolvExpr/driver_cfa_cpp-CommonType.obj `if test -f 'ResolvExpr/CommonType.cc'; then $(CYGPATH_W) 'ResolvExpr/CommonType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CommonType.cc'; fi`
     1718@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Po
     1719@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/CommonType.cc' object='ResolvExpr/driver_cfa_cpp-CommonType.obj' libtool=no @AMDEPBACKSLASH@
     1720@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1721@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CommonType.obj `if test -f 'ResolvExpr/CommonType.cc'; then $(CYGPATH_W) 'ResolvExpr/CommonType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CommonType.cc'; fi`
    16191722
    16201723ResolvExpr/driver_cfa_cpp-ConversionCost.o: ResolvExpr/ConversionCost.cc
    1621 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ConversionCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.o `test -f 'ResolvExpr/ConversionCost.cc' || echo '$(srcdir)/'`ResolvExpr/ConversionCost.cc
    1622 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Po
    1623 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/driver_cfa_cpp-ConversionCost.o' libtool=no @AMDEPBACKSLASH@
    1624 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1625 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.o `test -f 'ResolvExpr/ConversionCost.cc' || echo '$(srcdir)/'`ResolvExpr/ConversionCost.cc
     1724@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ConversionCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.o `test -f 'ResolvExpr/ConversionCost.cc' || echo '$(srcdir)/'`ResolvExpr/ConversionCost.cc
     1725@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Po
     1726@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/driver_cfa_cpp-ConversionCost.o' libtool=no @AMDEPBACKSLASH@
     1727@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1728@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.o `test -f 'ResolvExpr/ConversionCost.cc' || echo '$(srcdir)/'`ResolvExpr/ConversionCost.cc
    16261729
    16271730ResolvExpr/driver_cfa_cpp-ConversionCost.obj: ResolvExpr/ConversionCost.cc
    1628 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ConversionCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.obj `if test -f 'ResolvExpr/ConversionCost.cc'; then $(CYGPATH_W) 'ResolvExpr/ConversionCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ConversionCost.cc'; fi`
    1629 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Po
    1630 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/driver_cfa_cpp-ConversionCost.obj' libtool=no @AMDEPBACKSLASH@
    1631 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1632 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.obj `if test -f 'ResolvExpr/ConversionCost.cc'; then $(CYGPATH_W) 'ResolvExpr/ConversionCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ConversionCost.cc'; fi`
     1731@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ConversionCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.obj `if test -f 'ResolvExpr/ConversionCost.cc'; then $(CYGPATH_W) 'ResolvExpr/ConversionCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ConversionCost.cc'; fi`
     1732@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Po
     1733@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/driver_cfa_cpp-ConversionCost.obj' libtool=no @AMDEPBACKSLASH@
     1734@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1735@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ConversionCost.obj `if test -f 'ResolvExpr/ConversionCost.cc'; then $(CYGPATH_W) 'ResolvExpr/ConversionCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ConversionCost.cc'; fi`
    16331736
    16341737ResolvExpr/driver_cfa_cpp-CastCost.o: ResolvExpr/CastCost.cc
    1635 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CastCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-CastCost.o `test -f 'ResolvExpr/CastCost.cc' || echo '$(srcdir)/'`ResolvExpr/CastCost.cc
    1636 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Po
    1637 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/CastCost.cc' object='ResolvExpr/driver_cfa_cpp-CastCost.o' libtool=no @AMDEPBACKSLASH@
    1638 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1639 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CastCost.o `test -f 'ResolvExpr/CastCost.cc' || echo '$(srcdir)/'`ResolvExpr/CastCost.cc
     1738@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CastCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-CastCost.o `test -f 'ResolvExpr/CastCost.cc' || echo '$(srcdir)/'`ResolvExpr/CastCost.cc
     1739@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Po
     1740@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/CastCost.cc' object='ResolvExpr/driver_cfa_cpp-CastCost.o' libtool=no @AMDEPBACKSLASH@
     1741@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1742@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CastCost.o `test -f 'ResolvExpr/CastCost.cc' || echo '$(srcdir)/'`ResolvExpr/CastCost.cc
    16401743
    16411744ResolvExpr/driver_cfa_cpp-CastCost.obj: ResolvExpr/CastCost.cc
    1642 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CastCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-CastCost.obj `if test -f 'ResolvExpr/CastCost.cc'; then $(CYGPATH_W) 'ResolvExpr/CastCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CastCost.cc'; fi`
    1643 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Po
    1644 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/CastCost.cc' object='ResolvExpr/driver_cfa_cpp-CastCost.obj' libtool=no @AMDEPBACKSLASH@
    1645 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1646 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CastCost.obj `if test -f 'ResolvExpr/CastCost.cc'; then $(CYGPATH_W) 'ResolvExpr/CastCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CastCost.cc'; fi`
     1745@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-CastCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-CastCost.obj `if test -f 'ResolvExpr/CastCost.cc'; then $(CYGPATH_W) 'ResolvExpr/CastCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CastCost.cc'; fi`
     1746@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Po
     1747@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/CastCost.cc' object='ResolvExpr/driver_cfa_cpp-CastCost.obj' libtool=no @AMDEPBACKSLASH@
     1748@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1749@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-CastCost.obj `if test -f 'ResolvExpr/CastCost.cc'; then $(CYGPATH_W) 'ResolvExpr/CastCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CastCost.cc'; fi`
    16471750
    16481751ResolvExpr/driver_cfa_cpp-PtrsCastable.o: ResolvExpr/PtrsCastable.cc
    1649 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsCastable.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.o `test -f 'ResolvExpr/PtrsCastable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsCastable.cc
    1650 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Po
    1651 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsCastable.o' libtool=no @AMDEPBACKSLASH@
    1652 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1653 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.o `test -f 'ResolvExpr/PtrsCastable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsCastable.cc
     1752@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsCastable.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.o `test -f 'ResolvExpr/PtrsCastable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsCastable.cc
     1753@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Po
     1754@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsCastable.o' libtool=no @AMDEPBACKSLASH@
     1755@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1756@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.o `test -f 'ResolvExpr/PtrsCastable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsCastable.cc
    16541757
    16551758ResolvExpr/driver_cfa_cpp-PtrsCastable.obj: ResolvExpr/PtrsCastable.cc
    1656 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsCastable.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.obj `if test -f 'ResolvExpr/PtrsCastable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsCastable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsCastable.cc'; fi`
    1657 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Po
    1658 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsCastable.obj' libtool=no @AMDEPBACKSLASH@
    1659 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1660 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.obj `if test -f 'ResolvExpr/PtrsCastable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsCastable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsCastable.cc'; fi`
     1759@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PtrsCastable.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.obj `if test -f 'ResolvExpr/PtrsCastable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsCastable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsCastable.cc'; fi`
     1760@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Po
     1761@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsCastable.obj' libtool=no @AMDEPBACKSLASH@
     1762@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1763@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PtrsCastable.obj `if test -f 'ResolvExpr/PtrsCastable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsCastable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsCastable.cc'; fi`
    16611764
    16621765ResolvExpr/driver_cfa_cpp-AdjustExprType.o: ResolvExpr/AdjustExprType.cc
    1663 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AdjustExprType.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.o `test -f 'ResolvExpr/AdjustExprType.cc' || echo '$(srcdir)/'`ResolvExpr/AdjustExprType.cc
    1664 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Po
    1665 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/driver_cfa_cpp-AdjustExprType.o' libtool=no @AMDEPBACKSLASH@
    1666 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1667 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.o `test -f 'ResolvExpr/AdjustExprType.cc' || echo '$(srcdir)/'`ResolvExpr/AdjustExprType.cc
     1766@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AdjustExprType.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.o `test -f 'ResolvExpr/AdjustExprType.cc' || echo '$(srcdir)/'`ResolvExpr/AdjustExprType.cc
     1767@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Po
     1768@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/driver_cfa_cpp-AdjustExprType.o' libtool=no @AMDEPBACKSLASH@
     1769@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1770@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.o `test -f 'ResolvExpr/AdjustExprType.cc' || echo '$(srcdir)/'`ResolvExpr/AdjustExprType.cc
    16681771
    16691772ResolvExpr/driver_cfa_cpp-AdjustExprType.obj: ResolvExpr/AdjustExprType.cc
    1670 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AdjustExprType.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.obj `if test -f 'ResolvExpr/AdjustExprType.cc'; then $(CYGPATH_W) 'ResolvExpr/AdjustExprType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AdjustExprType.cc'; fi`
    1671 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Po
    1672 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/driver_cfa_cpp-AdjustExprType.obj' libtool=no @AMDEPBACKSLASH@
    1673 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1674 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.obj `if test -f 'ResolvExpr/AdjustExprType.cc'; then $(CYGPATH_W) 'ResolvExpr/AdjustExprType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AdjustExprType.cc'; fi`
     1773@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AdjustExprType.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.obj `if test -f 'ResolvExpr/AdjustExprType.cc'; then $(CYGPATH_W) 'ResolvExpr/AdjustExprType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AdjustExprType.cc'; fi`
     1774@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Po
     1775@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/driver_cfa_cpp-AdjustExprType.obj' libtool=no @AMDEPBACKSLASH@
     1776@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1777@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AdjustExprType.obj `if test -f 'ResolvExpr/AdjustExprType.cc'; then $(CYGPATH_W) 'ResolvExpr/AdjustExprType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AdjustExprType.cc'; fi`
    16751778
    16761779ResolvExpr/driver_cfa_cpp-AlternativePrinter.o: ResolvExpr/AlternativePrinter.cc
    1677 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativePrinter.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.o `test -f 'ResolvExpr/AlternativePrinter.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativePrinter.cc
    1678 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Po
    1679 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/driver_cfa_cpp-AlternativePrinter.o' libtool=no @AMDEPBACKSLASH@
    1680 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1681 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.o `test -f 'ResolvExpr/AlternativePrinter.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativePrinter.cc
     1780@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativePrinter.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.o `test -f 'ResolvExpr/AlternativePrinter.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativePrinter.cc
     1781@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Po
     1782@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/driver_cfa_cpp-AlternativePrinter.o' libtool=no @AMDEPBACKSLASH@
     1783@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1784@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.o `test -f 'ResolvExpr/AlternativePrinter.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativePrinter.cc
    16821785
    16831786ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj: ResolvExpr/AlternativePrinter.cc
    1684 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj `if test -f 'ResolvExpr/AlternativePrinter.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativePrinter.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativePrinter.cc'; fi`
    1685 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Po
    1686 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj' libtool=no @AMDEPBACKSLASH@
    1687 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1688 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj `if test -f 'ResolvExpr/AlternativePrinter.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativePrinter.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativePrinter.cc'; fi`
     1787@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj `if test -f 'ResolvExpr/AlternativePrinter.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativePrinter.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativePrinter.cc'; fi`
     1788@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Po
     1789@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj' libtool=no @AMDEPBACKSLASH@
     1790@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1791@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj `if test -f 'ResolvExpr/AlternativePrinter.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativePrinter.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativePrinter.cc'; fi`
    16891792
    16901793ResolvExpr/driver_cfa_cpp-Resolver.o: ResolvExpr/Resolver.cc
    1691 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Resolver.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo -c -o ResolvExpr/driver_cfa_cpp-Resolver.o `test -f 'ResolvExpr/Resolver.cc' || echo '$(srcdir)/'`ResolvExpr/Resolver.cc
    1692 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Po
    1693 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Resolver.cc' object='ResolvExpr/driver_cfa_cpp-Resolver.o' libtool=no @AMDEPBACKSLASH@
    1694 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1695 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Resolver.o `test -f 'ResolvExpr/Resolver.cc' || echo '$(srcdir)/'`ResolvExpr/Resolver.cc
     1794@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Resolver.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo -c -o ResolvExpr/driver_cfa_cpp-Resolver.o `test -f 'ResolvExpr/Resolver.cc' || echo '$(srcdir)/'`ResolvExpr/Resolver.cc
     1795@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Po
     1796@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Resolver.cc' object='ResolvExpr/driver_cfa_cpp-Resolver.o' libtool=no @AMDEPBACKSLASH@
     1797@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1798@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Resolver.o `test -f 'ResolvExpr/Resolver.cc' || echo '$(srcdir)/'`ResolvExpr/Resolver.cc
    16961799
    16971800ResolvExpr/driver_cfa_cpp-Resolver.obj: ResolvExpr/Resolver.cc
    1698 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Resolver.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo -c -o ResolvExpr/driver_cfa_cpp-Resolver.obj `if test -f 'ResolvExpr/Resolver.cc'; then $(CYGPATH_W) 'ResolvExpr/Resolver.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Resolver.cc'; fi`
    1699 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Po
    1700 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Resolver.cc' object='ResolvExpr/driver_cfa_cpp-Resolver.obj' libtool=no @AMDEPBACKSLASH@
    1701 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1702 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Resolver.obj `if test -f 'ResolvExpr/Resolver.cc'; then $(CYGPATH_W) 'ResolvExpr/Resolver.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Resolver.cc'; fi`
     1801@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Resolver.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo -c -o ResolvExpr/driver_cfa_cpp-Resolver.obj `if test -f 'ResolvExpr/Resolver.cc'; then $(CYGPATH_W) 'ResolvExpr/Resolver.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Resolver.cc'; fi`
     1802@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Po
     1803@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Resolver.cc' object='ResolvExpr/driver_cfa_cpp-Resolver.obj' libtool=no @AMDEPBACKSLASH@
     1804@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1805@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Resolver.obj `if test -f 'ResolvExpr/Resolver.cc'; then $(CYGPATH_W) 'ResolvExpr/Resolver.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Resolver.cc'; fi`
    17031806
    17041807ResolvExpr/driver_cfa_cpp-ResolveTypeof.o: ResolvExpr/ResolveTypeof.cc
    1705 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ResolveTypeof.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.o `test -f 'ResolvExpr/ResolveTypeof.cc' || echo '$(srcdir)/'`ResolvExpr/ResolveTypeof.cc
    1706 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Po
    1707 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/driver_cfa_cpp-ResolveTypeof.o' libtool=no @AMDEPBACKSLASH@
    1708 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1709 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.o `test -f 'ResolvExpr/ResolveTypeof.cc' || echo '$(srcdir)/'`ResolvExpr/ResolveTypeof.cc
     1808@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ResolveTypeof.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.o `test -f 'ResolvExpr/ResolveTypeof.cc' || echo '$(srcdir)/'`ResolvExpr/ResolveTypeof.cc
     1809@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Po
     1810@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/driver_cfa_cpp-ResolveTypeof.o' libtool=no @AMDEPBACKSLASH@
     1811@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1812@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.o `test -f 'ResolvExpr/ResolveTypeof.cc' || echo '$(srcdir)/'`ResolvExpr/ResolveTypeof.cc
    17101813
    17111814ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj: ResolvExpr/ResolveTypeof.cc
    1712 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj `if test -f 'ResolvExpr/ResolveTypeof.cc'; then $(CYGPATH_W) 'ResolvExpr/ResolveTypeof.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ResolveTypeof.cc'; fi`
    1713 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Po
    1714 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj' libtool=no @AMDEPBACKSLASH@
    1715 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1716 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj `if test -f 'ResolvExpr/ResolveTypeof.cc'; then $(CYGPATH_W) 'ResolvExpr/ResolveTypeof.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ResolveTypeof.cc'; fi`
     1815@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj `if test -f 'ResolvExpr/ResolveTypeof.cc'; then $(CYGPATH_W) 'ResolvExpr/ResolveTypeof.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ResolveTypeof.cc'; fi`
     1816@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Po
     1817@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj' libtool=no @AMDEPBACKSLASH@
     1818@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1819@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj `if test -f 'ResolvExpr/ResolveTypeof.cc'; then $(CYGPATH_W) 'ResolvExpr/ResolveTypeof.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ResolveTypeof.cc'; fi`
    17171820
    17181821ResolvExpr/driver_cfa_cpp-RenameVars.o: ResolvExpr/RenameVars.cc
    1719 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-RenameVars.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-RenameVars.o `test -f 'ResolvExpr/RenameVars.cc' || echo '$(srcdir)/'`ResolvExpr/RenameVars.cc
    1720 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Po
    1721 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/RenameVars.cc' object='ResolvExpr/driver_cfa_cpp-RenameVars.o' libtool=no @AMDEPBACKSLASH@
    1722 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1723 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-RenameVars.o `test -f 'ResolvExpr/RenameVars.cc' || echo '$(srcdir)/'`ResolvExpr/RenameVars.cc
     1822@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-RenameVars.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-RenameVars.o `test -f 'ResolvExpr/RenameVars.cc' || echo '$(srcdir)/'`ResolvExpr/RenameVars.cc
     1823@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Po
     1824@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/RenameVars.cc' object='ResolvExpr/driver_cfa_cpp-RenameVars.o' libtool=no @AMDEPBACKSLASH@
     1825@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1826@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-RenameVars.o `test -f 'ResolvExpr/RenameVars.cc' || echo '$(srcdir)/'`ResolvExpr/RenameVars.cc
    17241827
    17251828ResolvExpr/driver_cfa_cpp-RenameVars.obj: ResolvExpr/RenameVars.cc
    1726 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-RenameVars.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-RenameVars.obj `if test -f 'ResolvExpr/RenameVars.cc'; then $(CYGPATH_W) 'ResolvExpr/RenameVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/RenameVars.cc'; fi`
    1727 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Po
    1728 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/RenameVars.cc' object='ResolvExpr/driver_cfa_cpp-RenameVars.obj' libtool=no @AMDEPBACKSLASH@
    1729 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1730 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-RenameVars.obj `if test -f 'ResolvExpr/RenameVars.cc'; then $(CYGPATH_W) 'ResolvExpr/RenameVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/RenameVars.cc'; fi`
     1829@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-RenameVars.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-RenameVars.obj `if test -f 'ResolvExpr/RenameVars.cc'; then $(CYGPATH_W) 'ResolvExpr/RenameVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/RenameVars.cc'; fi`
     1830@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Po
     1831@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/RenameVars.cc' object='ResolvExpr/driver_cfa_cpp-RenameVars.obj' libtool=no @AMDEPBACKSLASH@
     1832@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1833@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-RenameVars.obj `if test -f 'ResolvExpr/RenameVars.cc'; then $(CYGPATH_W) 'ResolvExpr/RenameVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/RenameVars.cc'; fi`
    17311834
    17321835ResolvExpr/driver_cfa_cpp-FindOpenVars.o: ResolvExpr/FindOpenVars.cc
    1733 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-FindOpenVars.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.o `test -f 'ResolvExpr/FindOpenVars.cc' || echo '$(srcdir)/'`ResolvExpr/FindOpenVars.cc
    1734 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Po
    1735 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/driver_cfa_cpp-FindOpenVars.o' libtool=no @AMDEPBACKSLASH@
    1736 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1737 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.o `test -f 'ResolvExpr/FindOpenVars.cc' || echo '$(srcdir)/'`ResolvExpr/FindOpenVars.cc
     1836@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-FindOpenVars.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.o `test -f 'ResolvExpr/FindOpenVars.cc' || echo '$(srcdir)/'`ResolvExpr/FindOpenVars.cc
     1837@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Po
     1838@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/driver_cfa_cpp-FindOpenVars.o' libtool=no @AMDEPBACKSLASH@
     1839@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1840@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.o `test -f 'ResolvExpr/FindOpenVars.cc' || echo '$(srcdir)/'`ResolvExpr/FindOpenVars.cc
    17381841
    17391842ResolvExpr/driver_cfa_cpp-FindOpenVars.obj: ResolvExpr/FindOpenVars.cc
    1740 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-FindOpenVars.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.obj `if test -f 'ResolvExpr/FindOpenVars.cc'; then $(CYGPATH_W) 'ResolvExpr/FindOpenVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/FindOpenVars.cc'; fi`
    1741 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Po
    1742 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/driver_cfa_cpp-FindOpenVars.obj' libtool=no @AMDEPBACKSLASH@
    1743 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1744 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.obj `if test -f 'ResolvExpr/FindOpenVars.cc'; then $(CYGPATH_W) 'ResolvExpr/FindOpenVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/FindOpenVars.cc'; fi`
     1843@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-FindOpenVars.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.obj `if test -f 'ResolvExpr/FindOpenVars.cc'; then $(CYGPATH_W) 'ResolvExpr/FindOpenVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/FindOpenVars.cc'; fi`
     1844@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Po
     1845@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/driver_cfa_cpp-FindOpenVars.obj' libtool=no @AMDEPBACKSLASH@
     1846@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1847@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-FindOpenVars.obj `if test -f 'ResolvExpr/FindOpenVars.cc'; then $(CYGPATH_W) 'ResolvExpr/FindOpenVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/FindOpenVars.cc'; fi`
    17451848
    17461849ResolvExpr/driver_cfa_cpp-PolyCost.o: ResolvExpr/PolyCost.cc
    1747 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PolyCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-PolyCost.o `test -f 'ResolvExpr/PolyCost.cc' || echo '$(srcdir)/'`ResolvExpr/PolyCost.cc
    1748 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Po
    1749 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PolyCost.cc' object='ResolvExpr/driver_cfa_cpp-PolyCost.o' libtool=no @AMDEPBACKSLASH@
    1750 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1751 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PolyCost.o `test -f 'ResolvExpr/PolyCost.cc' || echo '$(srcdir)/'`ResolvExpr/PolyCost.cc
     1850@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PolyCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-PolyCost.o `test -f 'ResolvExpr/PolyCost.cc' || echo '$(srcdir)/'`ResolvExpr/PolyCost.cc
     1851@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Po
     1852@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PolyCost.cc' object='ResolvExpr/driver_cfa_cpp-PolyCost.o' libtool=no @AMDEPBACKSLASH@
     1853@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1854@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PolyCost.o `test -f 'ResolvExpr/PolyCost.cc' || echo '$(srcdir)/'`ResolvExpr/PolyCost.cc
    17521855
    17531856ResolvExpr/driver_cfa_cpp-PolyCost.obj: ResolvExpr/PolyCost.cc
    1754 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PolyCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-PolyCost.obj `if test -f 'ResolvExpr/PolyCost.cc'; then $(CYGPATH_W) 'ResolvExpr/PolyCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PolyCost.cc'; fi`
    1755 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Po
    1756 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PolyCost.cc' object='ResolvExpr/driver_cfa_cpp-PolyCost.obj' libtool=no @AMDEPBACKSLASH@
    1757 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1758 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PolyCost.obj `if test -f 'ResolvExpr/PolyCost.cc'; then $(CYGPATH_W) 'ResolvExpr/PolyCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PolyCost.cc'; fi`
     1857@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-PolyCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo -c -o ResolvExpr/driver_cfa_cpp-PolyCost.obj `if test -f 'ResolvExpr/PolyCost.cc'; then $(CYGPATH_W) 'ResolvExpr/PolyCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PolyCost.cc'; fi`
     1858@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Po
     1859@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PolyCost.cc' object='ResolvExpr/driver_cfa_cpp-PolyCost.obj' libtool=no @AMDEPBACKSLASH@
     1860@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1861@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-PolyCost.obj `if test -f 'ResolvExpr/PolyCost.cc'; then $(CYGPATH_W) 'ResolvExpr/PolyCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PolyCost.cc'; fi`
    17591862
    17601863ResolvExpr/driver_cfa_cpp-Occurs.o: ResolvExpr/Occurs.cc
    1761 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Occurs.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo -c -o ResolvExpr/driver_cfa_cpp-Occurs.o `test -f 'ResolvExpr/Occurs.cc' || echo '$(srcdir)/'`ResolvExpr/Occurs.cc
    1762 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Po
    1763 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Occurs.cc' object='ResolvExpr/driver_cfa_cpp-Occurs.o' libtool=no @AMDEPBACKSLASH@
    1764 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1765 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Occurs.o `test -f 'ResolvExpr/Occurs.cc' || echo '$(srcdir)/'`ResolvExpr/Occurs.cc
     1864@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Occurs.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo -c -o ResolvExpr/driver_cfa_cpp-Occurs.o `test -f 'ResolvExpr/Occurs.cc' || echo '$(srcdir)/'`ResolvExpr/Occurs.cc
     1865@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Po
     1866@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Occurs.cc' object='ResolvExpr/driver_cfa_cpp-Occurs.o' libtool=no @AMDEPBACKSLASH@
     1867@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1868@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Occurs.o `test -f 'ResolvExpr/Occurs.cc' || echo '$(srcdir)/'`ResolvExpr/Occurs.cc
    17661869
    17671870ResolvExpr/driver_cfa_cpp-Occurs.obj: ResolvExpr/Occurs.cc
    1768 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Occurs.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo -c -o ResolvExpr/driver_cfa_cpp-Occurs.obj `if test -f 'ResolvExpr/Occurs.cc'; then $(CYGPATH_W) 'ResolvExpr/Occurs.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Occurs.cc'; fi`
    1769 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Po
    1770 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Occurs.cc' object='ResolvExpr/driver_cfa_cpp-Occurs.obj' libtool=no @AMDEPBACKSLASH@
    1771 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1772 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Occurs.obj `if test -f 'ResolvExpr/Occurs.cc'; then $(CYGPATH_W) 'ResolvExpr/Occurs.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Occurs.cc'; fi`
     1871@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-Occurs.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo -c -o ResolvExpr/driver_cfa_cpp-Occurs.obj `if test -f 'ResolvExpr/Occurs.cc'; then $(CYGPATH_W) 'ResolvExpr/Occurs.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Occurs.cc'; fi`
     1872@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Po
     1873@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Occurs.cc' object='ResolvExpr/driver_cfa_cpp-Occurs.obj' libtool=no @AMDEPBACKSLASH@
     1874@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1875@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-Occurs.obj `if test -f 'ResolvExpr/Occurs.cc'; then $(CYGPATH_W) 'ResolvExpr/Occurs.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Occurs.cc'; fi`
    17731876
    17741877ResolvExpr/driver_cfa_cpp-TypeEnvironment.o: ResolvExpr/TypeEnvironment.cc
    1775 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-TypeEnvironment.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.o `test -f 'ResolvExpr/TypeEnvironment.cc' || echo '$(srcdir)/'`ResolvExpr/TypeEnvironment.cc
    1776 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po
    1777 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/driver_cfa_cpp-TypeEnvironment.o' libtool=no @AMDEPBACKSLASH@
    1778 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1779 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.o `test -f 'ResolvExpr/TypeEnvironment.cc' || echo '$(srcdir)/'`ResolvExpr/TypeEnvironment.cc
     1878@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-TypeEnvironment.o -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.o `test -f 'ResolvExpr/TypeEnvironment.cc' || echo '$(srcdir)/'`ResolvExpr/TypeEnvironment.cc
     1879@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po
     1880@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/driver_cfa_cpp-TypeEnvironment.o' libtool=no @AMDEPBACKSLASH@
     1881@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1882@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.o `test -f 'ResolvExpr/TypeEnvironment.cc' || echo '$(srcdir)/'`ResolvExpr/TypeEnvironment.cc
    17801883
    17811884ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj: ResolvExpr/TypeEnvironment.cc
    1782 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi`
    1783 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po
    1784 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj' libtool=no @AMDEPBACKSLASH@
    1785 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1786 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi`
     1885@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi`
     1886@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po
     1887@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj' libtool=no @AMDEPBACKSLASH@
     1888@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1889@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi`
    17871890
    17881891SymTab/driver_cfa_cpp-Indexer.o: SymTab/Indexer.cc
    1789 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Indexer.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo -c -o SymTab/driver_cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc
    1790 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po
    1791 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Indexer.cc' object='SymTab/driver_cfa_cpp-Indexer.o' libtool=no @AMDEPBACKSLASH@
    1792 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1793 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc
     1892@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Indexer.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo -c -o SymTab/driver_cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc
     1893@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po
     1894@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Indexer.cc' object='SymTab/driver_cfa_cpp-Indexer.o' libtool=no @AMDEPBACKSLASH@
     1895@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1896@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc
    17941897
    17951898SymTab/driver_cfa_cpp-Indexer.obj: SymTab/Indexer.cc
    1796 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Indexer.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo -c -o SymTab/driver_cfa_cpp-Indexer.obj `if test -f 'SymTab/Indexer.cc'; then $(CYGPATH_W) 'SymTab/Indexer.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Indexer.cc'; fi`
    1797 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po
    1798 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Indexer.cc' object='SymTab/driver_cfa_cpp-Indexer.obj' libtool=no @AMDEPBACKSLASH@
    1799 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1800 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Indexer.obj `if test -f 'SymTab/Indexer.cc'; then $(CYGPATH_W) 'SymTab/Indexer.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Indexer.cc'; fi`
     1899@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Indexer.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo -c -o SymTab/driver_cfa_cpp-Indexer.obj `if test -f 'SymTab/Indexer.cc'; then $(CYGPATH_W) 'SymTab/Indexer.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Indexer.cc'; fi`
     1900@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po
     1901@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Indexer.cc' object='SymTab/driver_cfa_cpp-Indexer.obj' libtool=no @AMDEPBACKSLASH@
     1902@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1903@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Indexer.obj `if test -f 'SymTab/Indexer.cc'; then $(CYGPATH_W) 'SymTab/Indexer.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Indexer.cc'; fi`
    18011904
    18021905SymTab/driver_cfa_cpp-Mangler.o: SymTab/Mangler.cc
    1803 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Mangler.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo -c -o SymTab/driver_cfa_cpp-Mangler.o `test -f 'SymTab/Mangler.cc' || echo '$(srcdir)/'`SymTab/Mangler.cc
    1804 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Po
    1805 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Mangler.cc' object='SymTab/driver_cfa_cpp-Mangler.o' libtool=no @AMDEPBACKSLASH@
    1806 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1807 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Mangler.o `test -f 'SymTab/Mangler.cc' || echo '$(srcdir)/'`SymTab/Mangler.cc
     1906@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Mangler.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo -c -o SymTab/driver_cfa_cpp-Mangler.o `test -f 'SymTab/Mangler.cc' || echo '$(srcdir)/'`SymTab/Mangler.cc
     1907@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Po
     1908@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Mangler.cc' object='SymTab/driver_cfa_cpp-Mangler.o' libtool=no @AMDEPBACKSLASH@
     1909@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1910@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Mangler.o `test -f 'SymTab/Mangler.cc' || echo '$(srcdir)/'`SymTab/Mangler.cc
    18081911
    18091912SymTab/driver_cfa_cpp-Mangler.obj: SymTab/Mangler.cc
    1810 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Mangler.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo -c -o SymTab/driver_cfa_cpp-Mangler.obj `if test -f 'SymTab/Mangler.cc'; then $(CYGPATH_W) 'SymTab/Mangler.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Mangler.cc'; fi`
    1811 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Po
    1812 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Mangler.cc' object='SymTab/driver_cfa_cpp-Mangler.obj' libtool=no @AMDEPBACKSLASH@
    1813 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1814 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Mangler.obj `if test -f 'SymTab/Mangler.cc'; then $(CYGPATH_W) 'SymTab/Mangler.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Mangler.cc'; fi`
     1913@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Mangler.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo -c -o SymTab/driver_cfa_cpp-Mangler.obj `if test -f 'SymTab/Mangler.cc'; then $(CYGPATH_W) 'SymTab/Mangler.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Mangler.cc'; fi`
     1914@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Po
     1915@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Mangler.cc' object='SymTab/driver_cfa_cpp-Mangler.obj' libtool=no @AMDEPBACKSLASH@
     1916@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1917@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Mangler.obj `if test -f 'SymTab/Mangler.cc'; then $(CYGPATH_W) 'SymTab/Mangler.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Mangler.cc'; fi`
    18151918
    18161919SymTab/driver_cfa_cpp-Validate.o: SymTab/Validate.cc
    1817 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Validate.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo -c -o SymTab/driver_cfa_cpp-Validate.o `test -f 'SymTab/Validate.cc' || echo '$(srcdir)/'`SymTab/Validate.cc
    1818 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po
    1819 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Validate.cc' object='SymTab/driver_cfa_cpp-Validate.o' libtool=no @AMDEPBACKSLASH@
    1820 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1821 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Validate.o `test -f 'SymTab/Validate.cc' || echo '$(srcdir)/'`SymTab/Validate.cc
     1920@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Validate.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo -c -o SymTab/driver_cfa_cpp-Validate.o `test -f 'SymTab/Validate.cc' || echo '$(srcdir)/'`SymTab/Validate.cc
     1921@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po
     1922@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Validate.cc' object='SymTab/driver_cfa_cpp-Validate.o' libtool=no @AMDEPBACKSLASH@
     1923@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1924@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Validate.o `test -f 'SymTab/Validate.cc' || echo '$(srcdir)/'`SymTab/Validate.cc
    18221925
    18231926SymTab/driver_cfa_cpp-Validate.obj: SymTab/Validate.cc
    1824 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Validate.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo -c -o SymTab/driver_cfa_cpp-Validate.obj `if test -f 'SymTab/Validate.cc'; then $(CYGPATH_W) 'SymTab/Validate.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Validate.cc'; fi`
    1825 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po
    1826 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Validate.cc' object='SymTab/driver_cfa_cpp-Validate.obj' libtool=no @AMDEPBACKSLASH@
    1827 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1828 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Validate.obj `if test -f 'SymTab/Validate.cc'; then $(CYGPATH_W) 'SymTab/Validate.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Validate.cc'; fi`
     1927@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Validate.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo -c -o SymTab/driver_cfa_cpp-Validate.obj `if test -f 'SymTab/Validate.cc'; then $(CYGPATH_W) 'SymTab/Validate.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Validate.cc'; fi`
     1928@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po
     1929@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Validate.cc' object='SymTab/driver_cfa_cpp-Validate.obj' libtool=no @AMDEPBACKSLASH@
     1930@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1931@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Validate.obj `if test -f 'SymTab/Validate.cc'; then $(CYGPATH_W) 'SymTab/Validate.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Validate.cc'; fi`
    18291932
    18301933SymTab/driver_cfa_cpp-FixFunction.o: SymTab/FixFunction.cc
    1831 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-FixFunction.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo -c -o SymTab/driver_cfa_cpp-FixFunction.o `test -f 'SymTab/FixFunction.cc' || echo '$(srcdir)/'`SymTab/FixFunction.cc
    1832 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po
    1833 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/FixFunction.cc' object='SymTab/driver_cfa_cpp-FixFunction.o' libtool=no @AMDEPBACKSLASH@
    1834 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1835 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-FixFunction.o `test -f 'SymTab/FixFunction.cc' || echo '$(srcdir)/'`SymTab/FixFunction.cc
     1934@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-FixFunction.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo -c -o SymTab/driver_cfa_cpp-FixFunction.o `test -f 'SymTab/FixFunction.cc' || echo '$(srcdir)/'`SymTab/FixFunction.cc
     1935@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po
     1936@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/FixFunction.cc' object='SymTab/driver_cfa_cpp-FixFunction.o' libtool=no @AMDEPBACKSLASH@
     1937@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1938@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-FixFunction.o `test -f 'SymTab/FixFunction.cc' || echo '$(srcdir)/'`SymTab/FixFunction.cc
    18361939
    18371940SymTab/driver_cfa_cpp-FixFunction.obj: SymTab/FixFunction.cc
    1838 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-FixFunction.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo -c -o SymTab/driver_cfa_cpp-FixFunction.obj `if test -f 'SymTab/FixFunction.cc'; then $(CYGPATH_W) 'SymTab/FixFunction.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/FixFunction.cc'; fi`
    1839 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po
    1840 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/FixFunction.cc' object='SymTab/driver_cfa_cpp-FixFunction.obj' libtool=no @AMDEPBACKSLASH@
    1841 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1842 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-FixFunction.obj `if test -f 'SymTab/FixFunction.cc'; then $(CYGPATH_W) 'SymTab/FixFunction.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/FixFunction.cc'; fi`
     1941@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-FixFunction.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo -c -o SymTab/driver_cfa_cpp-FixFunction.obj `if test -f 'SymTab/FixFunction.cc'; then $(CYGPATH_W) 'SymTab/FixFunction.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/FixFunction.cc'; fi`
     1942@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po
     1943@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/FixFunction.cc' object='SymTab/driver_cfa_cpp-FixFunction.obj' libtool=no @AMDEPBACKSLASH@
     1944@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1945@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-FixFunction.obj `if test -f 'SymTab/FixFunction.cc'; then $(CYGPATH_W) 'SymTab/FixFunction.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/FixFunction.cc'; fi`
    18431946
    18441947SymTab/driver_cfa_cpp-ImplementationType.o: SymTab/ImplementationType.cc
    1845 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-ImplementationType.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Tpo -c -o SymTab/driver_cfa_cpp-ImplementationType.o `test -f 'SymTab/ImplementationType.cc' || echo '$(srcdir)/'`SymTab/ImplementationType.cc
    1846 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Po
    1847 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/ImplementationType.cc' object='SymTab/driver_cfa_cpp-ImplementationType.o' libtool=no @AMDEPBACKSLASH@
    1848 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1849 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-ImplementationType.o `test -f 'SymTab/ImplementationType.cc' || echo '$(srcdir)/'`SymTab/ImplementationType.cc
     1948@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-ImplementationType.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Tpo -c -o SymTab/driver_cfa_cpp-ImplementationType.o `test -f 'SymTab/ImplementationType.cc' || echo '$(srcdir)/'`SymTab/ImplementationType.cc
     1949@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Po
     1950@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/ImplementationType.cc' object='SymTab/driver_cfa_cpp-ImplementationType.o' libtool=no @AMDEPBACKSLASH@
     1951@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1952@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-ImplementationType.o `test -f 'SymTab/ImplementationType.cc' || echo '$(srcdir)/'`SymTab/ImplementationType.cc
    18501953
    18511954SymTab/driver_cfa_cpp-ImplementationType.obj: SymTab/ImplementationType.cc
    1852 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-ImplementationType.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Tpo -c -o SymTab/driver_cfa_cpp-ImplementationType.obj `if test -f 'SymTab/ImplementationType.cc'; then $(CYGPATH_W) 'SymTab/ImplementationType.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/ImplementationType.cc'; fi`
    1853 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Po
    1854 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/ImplementationType.cc' object='SymTab/driver_cfa_cpp-ImplementationType.obj' libtool=no @AMDEPBACKSLASH@
    1855 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1856 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-ImplementationType.obj `if test -f 'SymTab/ImplementationType.cc'; then $(CYGPATH_W) 'SymTab/ImplementationType.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/ImplementationType.cc'; fi`
     1955@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-ImplementationType.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Tpo -c -o SymTab/driver_cfa_cpp-ImplementationType.obj `if test -f 'SymTab/ImplementationType.cc'; then $(CYGPATH_W) 'SymTab/ImplementationType.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/ImplementationType.cc'; fi`
     1956@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Po
     1957@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/ImplementationType.cc' object='SymTab/driver_cfa_cpp-ImplementationType.obj' libtool=no @AMDEPBACKSLASH@
     1958@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1959@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-ImplementationType.obj `if test -f 'SymTab/ImplementationType.cc'; then $(CYGPATH_W) 'SymTab/ImplementationType.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/ImplementationType.cc'; fi`
    18571960
    18581961SymTab/driver_cfa_cpp-TypeEquality.o: SymTab/TypeEquality.cc
    1859 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-TypeEquality.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Tpo -c -o SymTab/driver_cfa_cpp-TypeEquality.o `test -f 'SymTab/TypeEquality.cc' || echo '$(srcdir)/'`SymTab/TypeEquality.cc
    1860 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Po
    1861 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/TypeEquality.cc' object='SymTab/driver_cfa_cpp-TypeEquality.o' libtool=no @AMDEPBACKSLASH@
    1862 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1863 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-TypeEquality.o `test -f 'SymTab/TypeEquality.cc' || echo '$(srcdir)/'`SymTab/TypeEquality.cc
     1962@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-TypeEquality.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Tpo -c -o SymTab/driver_cfa_cpp-TypeEquality.o `test -f 'SymTab/TypeEquality.cc' || echo '$(srcdir)/'`SymTab/TypeEquality.cc
     1963@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Po
     1964@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/TypeEquality.cc' object='SymTab/driver_cfa_cpp-TypeEquality.o' libtool=no @AMDEPBACKSLASH@
     1965@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1966@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-TypeEquality.o `test -f 'SymTab/TypeEquality.cc' || echo '$(srcdir)/'`SymTab/TypeEquality.cc
    18641967
    18651968SymTab/driver_cfa_cpp-TypeEquality.obj: SymTab/TypeEquality.cc
    1866 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-TypeEquality.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Tpo -c -o SymTab/driver_cfa_cpp-TypeEquality.obj `if test -f 'SymTab/TypeEquality.cc'; then $(CYGPATH_W) 'SymTab/TypeEquality.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/TypeEquality.cc'; fi`
    1867 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Po
    1868 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/TypeEquality.cc' object='SymTab/driver_cfa_cpp-TypeEquality.obj' libtool=no @AMDEPBACKSLASH@
    1869 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1870 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-TypeEquality.obj `if test -f 'SymTab/TypeEquality.cc'; then $(CYGPATH_W) 'SymTab/TypeEquality.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/TypeEquality.cc'; fi`
     1969@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-TypeEquality.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Tpo -c -o SymTab/driver_cfa_cpp-TypeEquality.obj `if test -f 'SymTab/TypeEquality.cc'; then $(CYGPATH_W) 'SymTab/TypeEquality.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/TypeEquality.cc'; fi`
     1970@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Po
     1971@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/TypeEquality.cc' object='SymTab/driver_cfa_cpp-TypeEquality.obj' libtool=no @AMDEPBACKSLASH@
     1972@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1973@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-TypeEquality.obj `if test -f 'SymTab/TypeEquality.cc'; then $(CYGPATH_W) 'SymTab/TypeEquality.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/TypeEquality.cc'; fi`
     1974
     1975SymTab/driver_cfa_cpp-Autogen.o: SymTab/Autogen.cc
     1976@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Autogen.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Tpo -c -o SymTab/driver_cfa_cpp-Autogen.o `test -f 'SymTab/Autogen.cc' || echo '$(srcdir)/'`SymTab/Autogen.cc
     1977@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Po
     1978@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Autogen.cc' object='SymTab/driver_cfa_cpp-Autogen.o' libtool=no @AMDEPBACKSLASH@
     1979@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1980@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Autogen.o `test -f 'SymTab/Autogen.cc' || echo '$(srcdir)/'`SymTab/Autogen.cc
     1981
     1982SymTab/driver_cfa_cpp-Autogen.obj: SymTab/Autogen.cc
     1983@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Autogen.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Tpo -c -o SymTab/driver_cfa_cpp-Autogen.obj `if test -f 'SymTab/Autogen.cc'; then $(CYGPATH_W) 'SymTab/Autogen.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Autogen.cc'; fi`
     1984@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Po
     1985@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Autogen.cc' object='SymTab/driver_cfa_cpp-Autogen.obj' libtool=no @AMDEPBACKSLASH@
     1986@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1987@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-Autogen.obj `if test -f 'SymTab/Autogen.cc'; then $(CYGPATH_W) 'SymTab/Autogen.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Autogen.cc'; fi`
    18711988
    18721989SynTree/driver_cfa_cpp-Type.o: SynTree/Type.cc
    1873 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Type.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo -c -o SynTree/driver_cfa_cpp-Type.o `test -f 'SynTree/Type.cc' || echo '$(srcdir)/'`SynTree/Type.cc
    1874 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Po
    1875 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Type.cc' object='SynTree/driver_cfa_cpp-Type.o' libtool=no @AMDEPBACKSLASH@
    1876 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1877 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Type.o `test -f 'SynTree/Type.cc' || echo '$(srcdir)/'`SynTree/Type.cc
     1990@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Type.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo -c -o SynTree/driver_cfa_cpp-Type.o `test -f 'SynTree/Type.cc' || echo '$(srcdir)/'`SynTree/Type.cc
     1991@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Po
     1992@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Type.cc' object='SynTree/driver_cfa_cpp-Type.o' libtool=no @AMDEPBACKSLASH@
     1993@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1994@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Type.o `test -f 'SynTree/Type.cc' || echo '$(srcdir)/'`SynTree/Type.cc
    18781995
    18791996SynTree/driver_cfa_cpp-Type.obj: SynTree/Type.cc
    1880 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Type.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo -c -o SynTree/driver_cfa_cpp-Type.obj `if test -f 'SynTree/Type.cc'; then $(CYGPATH_W) 'SynTree/Type.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Type.cc'; fi`
    1881 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Po
    1882 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Type.cc' object='SynTree/driver_cfa_cpp-Type.obj' libtool=no @AMDEPBACKSLASH@
    1883 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1884 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Type.obj `if test -f 'SynTree/Type.cc'; then $(CYGPATH_W) 'SynTree/Type.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Type.cc'; fi`
     1997@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Type.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo -c -o SynTree/driver_cfa_cpp-Type.obj `if test -f 'SynTree/Type.cc'; then $(CYGPATH_W) 'SynTree/Type.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Type.cc'; fi`
     1998@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Po
     1999@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Type.cc' object='SynTree/driver_cfa_cpp-Type.obj' libtool=no @AMDEPBACKSLASH@
     2000@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2001@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Type.obj `if test -f 'SynTree/Type.cc'; then $(CYGPATH_W) 'SynTree/Type.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Type.cc'; fi`
    18852002
    18862003SynTree/driver_cfa_cpp-VoidType.o: SynTree/VoidType.cc
    1887 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VoidType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo -c -o SynTree/driver_cfa_cpp-VoidType.o `test -f 'SynTree/VoidType.cc' || echo '$(srcdir)/'`SynTree/VoidType.cc
    1888 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po
    1889 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/VoidType.cc' object='SynTree/driver_cfa_cpp-VoidType.o' libtool=no @AMDEPBACKSLASH@
    1890 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1891 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VoidType.o `test -f 'SynTree/VoidType.cc' || echo '$(srcdir)/'`SynTree/VoidType.cc
     2004@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VoidType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo -c -o SynTree/driver_cfa_cpp-VoidType.o `test -f 'SynTree/VoidType.cc' || echo '$(srcdir)/'`SynTree/VoidType.cc
     2005@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po
     2006@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/VoidType.cc' object='SynTree/driver_cfa_cpp-VoidType.o' libtool=no @AMDEPBACKSLASH@
     2007@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2008@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VoidType.o `test -f 'SynTree/VoidType.cc' || echo '$(srcdir)/'`SynTree/VoidType.cc
    18922009
    18932010SynTree/driver_cfa_cpp-VoidType.obj: SynTree/VoidType.cc
    1894 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VoidType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo -c -o SynTree/driver_cfa_cpp-VoidType.obj `if test -f 'SynTree/VoidType.cc'; then $(CYGPATH_W) 'SynTree/VoidType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VoidType.cc'; fi`
    1895 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po
    1896 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/VoidType.cc' object='SynTree/driver_cfa_cpp-VoidType.obj' libtool=no @AMDEPBACKSLASH@
    1897 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1898 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VoidType.obj `if test -f 'SynTree/VoidType.cc'; then $(CYGPATH_W) 'SynTree/VoidType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VoidType.cc'; fi`
     2011@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VoidType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo -c -o SynTree/driver_cfa_cpp-VoidType.obj `if test -f 'SynTree/VoidType.cc'; then $(CYGPATH_W) 'SynTree/VoidType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VoidType.cc'; fi`
     2012@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po
     2013@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/VoidType.cc' object='SynTree/driver_cfa_cpp-VoidType.obj' libtool=no @AMDEPBACKSLASH@
     2014@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2015@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VoidType.obj `if test -f 'SynTree/VoidType.cc'; then $(CYGPATH_W) 'SynTree/VoidType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VoidType.cc'; fi`
    18992016
    19002017SynTree/driver_cfa_cpp-BasicType.o: SynTree/BasicType.cc
    1901 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-BasicType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo -c -o SynTree/driver_cfa_cpp-BasicType.o `test -f 'SynTree/BasicType.cc' || echo '$(srcdir)/'`SynTree/BasicType.cc
    1902 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po
    1903 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/BasicType.cc' object='SynTree/driver_cfa_cpp-BasicType.o' libtool=no @AMDEPBACKSLASH@
    1904 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1905 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-BasicType.o `test -f 'SynTree/BasicType.cc' || echo '$(srcdir)/'`SynTree/BasicType.cc
     2018@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-BasicType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo -c -o SynTree/driver_cfa_cpp-BasicType.o `test -f 'SynTree/BasicType.cc' || echo '$(srcdir)/'`SynTree/BasicType.cc
     2019@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po
     2020@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/BasicType.cc' object='SynTree/driver_cfa_cpp-BasicType.o' libtool=no @AMDEPBACKSLASH@
     2021@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2022@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-BasicType.o `test -f 'SynTree/BasicType.cc' || echo '$(srcdir)/'`SynTree/BasicType.cc
    19062023
    19072024SynTree/driver_cfa_cpp-BasicType.obj: SynTree/BasicType.cc
    1908 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-BasicType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo -c -o SynTree/driver_cfa_cpp-BasicType.obj `if test -f 'SynTree/BasicType.cc'; then $(CYGPATH_W) 'SynTree/BasicType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/BasicType.cc'; fi`
    1909 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po
    1910 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/BasicType.cc' object='SynTree/driver_cfa_cpp-BasicType.obj' libtool=no @AMDEPBACKSLASH@
    1911 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1912 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-BasicType.obj `if test -f 'SynTree/BasicType.cc'; then $(CYGPATH_W) 'SynTree/BasicType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/BasicType.cc'; fi`
     2025@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-BasicType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo -c -o SynTree/driver_cfa_cpp-BasicType.obj `if test -f 'SynTree/BasicType.cc'; then $(CYGPATH_W) 'SynTree/BasicType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/BasicType.cc'; fi`
     2026@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po
     2027@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/BasicType.cc' object='SynTree/driver_cfa_cpp-BasicType.obj' libtool=no @AMDEPBACKSLASH@
     2028@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2029@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-BasicType.obj `if test -f 'SynTree/BasicType.cc'; then $(CYGPATH_W) 'SynTree/BasicType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/BasicType.cc'; fi`
    19132030
    19142031SynTree/driver_cfa_cpp-PointerType.o: SynTree/PointerType.cc
    1915 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-PointerType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo -c -o SynTree/driver_cfa_cpp-PointerType.o `test -f 'SynTree/PointerType.cc' || echo '$(srcdir)/'`SynTree/PointerType.cc
    1916 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Po
    1917 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/PointerType.cc' object='SynTree/driver_cfa_cpp-PointerType.o' libtool=no @AMDEPBACKSLASH@
    1918 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1919 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-PointerType.o `test -f 'SynTree/PointerType.cc' || echo '$(srcdir)/'`SynTree/PointerType.cc
     2032@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-PointerType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo -c -o SynTree/driver_cfa_cpp-PointerType.o `test -f 'SynTree/PointerType.cc' || echo '$(srcdir)/'`SynTree/PointerType.cc
     2033@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Po
     2034@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/PointerType.cc' object='SynTree/driver_cfa_cpp-PointerType.o' libtool=no @AMDEPBACKSLASH@
     2035@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2036@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-PointerType.o `test -f 'SynTree/PointerType.cc' || echo '$(srcdir)/'`SynTree/PointerType.cc
    19202037
    19212038SynTree/driver_cfa_cpp-PointerType.obj: SynTree/PointerType.cc
    1922 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-PointerType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo -c -o SynTree/driver_cfa_cpp-PointerType.obj `if test -f 'SynTree/PointerType.cc'; then $(CYGPATH_W) 'SynTree/PointerType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/PointerType.cc'; fi`
    1923 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Po
    1924 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/PointerType.cc' object='SynTree/driver_cfa_cpp-PointerType.obj' libtool=no @AMDEPBACKSLASH@
    1925 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1926 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-PointerType.obj `if test -f 'SynTree/PointerType.cc'; then $(CYGPATH_W) 'SynTree/PointerType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/PointerType.cc'; fi`
     2039@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-PointerType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo -c -o SynTree/driver_cfa_cpp-PointerType.obj `if test -f 'SynTree/PointerType.cc'; then $(CYGPATH_W) 'SynTree/PointerType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/PointerType.cc'; fi`
     2040@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Po
     2041@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/PointerType.cc' object='SynTree/driver_cfa_cpp-PointerType.obj' libtool=no @AMDEPBACKSLASH@
     2042@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2043@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-PointerType.obj `if test -f 'SynTree/PointerType.cc'; then $(CYGPATH_W) 'SynTree/PointerType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/PointerType.cc'; fi`
    19272044
    19282045SynTree/driver_cfa_cpp-ArrayType.o: SynTree/ArrayType.cc
    1929 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ArrayType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo -c -o SynTree/driver_cfa_cpp-ArrayType.o `test -f 'SynTree/ArrayType.cc' || echo '$(srcdir)/'`SynTree/ArrayType.cc
    1930 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po
    1931 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ArrayType.cc' object='SynTree/driver_cfa_cpp-ArrayType.o' libtool=no @AMDEPBACKSLASH@
    1932 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1933 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ArrayType.o `test -f 'SynTree/ArrayType.cc' || echo '$(srcdir)/'`SynTree/ArrayType.cc
     2046@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ArrayType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo -c -o SynTree/driver_cfa_cpp-ArrayType.o `test -f 'SynTree/ArrayType.cc' || echo '$(srcdir)/'`SynTree/ArrayType.cc
     2047@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po
     2048@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ArrayType.cc' object='SynTree/driver_cfa_cpp-ArrayType.o' libtool=no @AMDEPBACKSLASH@
     2049@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2050@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ArrayType.o `test -f 'SynTree/ArrayType.cc' || echo '$(srcdir)/'`SynTree/ArrayType.cc
    19342051
    19352052SynTree/driver_cfa_cpp-ArrayType.obj: SynTree/ArrayType.cc
    1936 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ArrayType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo -c -o SynTree/driver_cfa_cpp-ArrayType.obj `if test -f 'SynTree/ArrayType.cc'; then $(CYGPATH_W) 'SynTree/ArrayType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ArrayType.cc'; fi`
    1937 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po
    1938 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ArrayType.cc' object='SynTree/driver_cfa_cpp-ArrayType.obj' libtool=no @AMDEPBACKSLASH@
    1939 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1940 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ArrayType.obj `if test -f 'SynTree/ArrayType.cc'; then $(CYGPATH_W) 'SynTree/ArrayType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ArrayType.cc'; fi`
     2053@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ArrayType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo -c -o SynTree/driver_cfa_cpp-ArrayType.obj `if test -f 'SynTree/ArrayType.cc'; then $(CYGPATH_W) 'SynTree/ArrayType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ArrayType.cc'; fi`
     2054@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po
     2055@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ArrayType.cc' object='SynTree/driver_cfa_cpp-ArrayType.obj' libtool=no @AMDEPBACKSLASH@
     2056@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2057@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ArrayType.obj `if test -f 'SynTree/ArrayType.cc'; then $(CYGPATH_W) 'SynTree/ArrayType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ArrayType.cc'; fi`
    19412058
    19422059SynTree/driver_cfa_cpp-FunctionType.o: SynTree/FunctionType.cc
    1943 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo -c -o SynTree/driver_cfa_cpp-FunctionType.o `test -f 'SynTree/FunctionType.cc' || echo '$(srcdir)/'`SynTree/FunctionType.cc
    1944 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Po
    1945 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/FunctionType.cc' object='SynTree/driver_cfa_cpp-FunctionType.o' libtool=no @AMDEPBACKSLASH@
    1946 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1947 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionType.o `test -f 'SynTree/FunctionType.cc' || echo '$(srcdir)/'`SynTree/FunctionType.cc
     2060@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo -c -o SynTree/driver_cfa_cpp-FunctionType.o `test -f 'SynTree/FunctionType.cc' || echo '$(srcdir)/'`SynTree/FunctionType.cc
     2061@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Po
     2062@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/FunctionType.cc' object='SynTree/driver_cfa_cpp-FunctionType.o' libtool=no @AMDEPBACKSLASH@
     2063@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2064@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionType.o `test -f 'SynTree/FunctionType.cc' || echo '$(srcdir)/'`SynTree/FunctionType.cc
    19482065
    19492066SynTree/driver_cfa_cpp-FunctionType.obj: SynTree/FunctionType.cc
    1950 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo -c -o SynTree/driver_cfa_cpp-FunctionType.obj `if test -f 'SynTree/FunctionType.cc'; then $(CYGPATH_W) 'SynTree/FunctionType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionType.cc'; fi`
    1951 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Po
    1952 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/FunctionType.cc' object='SynTree/driver_cfa_cpp-FunctionType.obj' libtool=no @AMDEPBACKSLASH@
    1953 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1954 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionType.obj `if test -f 'SynTree/FunctionType.cc'; then $(CYGPATH_W) 'SynTree/FunctionType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionType.cc'; fi`
     2067@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo -c -o SynTree/driver_cfa_cpp-FunctionType.obj `if test -f 'SynTree/FunctionType.cc'; then $(CYGPATH_W) 'SynTree/FunctionType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionType.cc'; fi`
     2068@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Po
     2069@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/FunctionType.cc' object='SynTree/driver_cfa_cpp-FunctionType.obj' libtool=no @AMDEPBACKSLASH@
     2070@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2071@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionType.obj `if test -f 'SynTree/FunctionType.cc'; then $(CYGPATH_W) 'SynTree/FunctionType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionType.cc'; fi`
    19552072
    19562073SynTree/driver_cfa_cpp-ReferenceToType.o: SynTree/ReferenceToType.cc
    1957 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ReferenceToType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo -c -o SynTree/driver_cfa_cpp-ReferenceToType.o `test -f 'SynTree/ReferenceToType.cc' || echo '$(srcdir)/'`SynTree/ReferenceToType.cc
    1958 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Po
    1959 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ReferenceToType.cc' object='SynTree/driver_cfa_cpp-ReferenceToType.o' libtool=no @AMDEPBACKSLASH@
    1960 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1961 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ReferenceToType.o `test -f 'SynTree/ReferenceToType.cc' || echo '$(srcdir)/'`SynTree/ReferenceToType.cc
     2074@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ReferenceToType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo -c -o SynTree/driver_cfa_cpp-ReferenceToType.o `test -f 'SynTree/ReferenceToType.cc' || echo '$(srcdir)/'`SynTree/ReferenceToType.cc
     2075@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Po
     2076@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ReferenceToType.cc' object='SynTree/driver_cfa_cpp-ReferenceToType.o' libtool=no @AMDEPBACKSLASH@
     2077@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2078@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ReferenceToType.o `test -f 'SynTree/ReferenceToType.cc' || echo '$(srcdir)/'`SynTree/ReferenceToType.cc
    19622079
    19632080SynTree/driver_cfa_cpp-ReferenceToType.obj: SynTree/ReferenceToType.cc
    1964 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ReferenceToType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo -c -o SynTree/driver_cfa_cpp-ReferenceToType.obj `if test -f 'SynTree/ReferenceToType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceToType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceToType.cc'; fi`
    1965 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Po
    1966 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ReferenceToType.cc' object='SynTree/driver_cfa_cpp-ReferenceToType.obj' libtool=no @AMDEPBACKSLASH@
    1967 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1968 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ReferenceToType.obj `if test -f 'SynTree/ReferenceToType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceToType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceToType.cc'; fi`
     2081@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ReferenceToType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo -c -o SynTree/driver_cfa_cpp-ReferenceToType.obj `if test -f 'SynTree/ReferenceToType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceToType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceToType.cc'; fi`
     2082@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Po
     2083@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ReferenceToType.cc' object='SynTree/driver_cfa_cpp-ReferenceToType.obj' libtool=no @AMDEPBACKSLASH@
     2084@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2085@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ReferenceToType.obj `if test -f 'SynTree/ReferenceToType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceToType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceToType.cc'; fi`
    19692086
    19702087SynTree/driver_cfa_cpp-TupleType.o: SynTree/TupleType.cc
    1971 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo -c -o SynTree/driver_cfa_cpp-TupleType.o `test -f 'SynTree/TupleType.cc' || echo '$(srcdir)/'`SynTree/TupleType.cc
    1972 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Po
    1973 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TupleType.cc' object='SynTree/driver_cfa_cpp-TupleType.o' libtool=no @AMDEPBACKSLASH@
    1974 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1975 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleType.o `test -f 'SynTree/TupleType.cc' || echo '$(srcdir)/'`SynTree/TupleType.cc
     2088@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo -c -o SynTree/driver_cfa_cpp-TupleType.o `test -f 'SynTree/TupleType.cc' || echo '$(srcdir)/'`SynTree/TupleType.cc
     2089@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Po
     2090@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TupleType.cc' object='SynTree/driver_cfa_cpp-TupleType.o' libtool=no @AMDEPBACKSLASH@
     2091@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2092@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleType.o `test -f 'SynTree/TupleType.cc' || echo '$(srcdir)/'`SynTree/TupleType.cc
    19762093
    19772094SynTree/driver_cfa_cpp-TupleType.obj: SynTree/TupleType.cc
    1978 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo -c -o SynTree/driver_cfa_cpp-TupleType.obj `if test -f 'SynTree/TupleType.cc'; then $(CYGPATH_W) 'SynTree/TupleType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleType.cc'; fi`
    1979 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Po
    1980 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TupleType.cc' object='SynTree/driver_cfa_cpp-TupleType.obj' libtool=no @AMDEPBACKSLASH@
    1981 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1982 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleType.obj `if test -f 'SynTree/TupleType.cc'; then $(CYGPATH_W) 'SynTree/TupleType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleType.cc'; fi`
     2095@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo -c -o SynTree/driver_cfa_cpp-TupleType.obj `if test -f 'SynTree/TupleType.cc'; then $(CYGPATH_W) 'SynTree/TupleType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleType.cc'; fi`
     2096@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Po
     2097@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TupleType.cc' object='SynTree/driver_cfa_cpp-TupleType.obj' libtool=no @AMDEPBACKSLASH@
     2098@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2099@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleType.obj `if test -f 'SynTree/TupleType.cc'; then $(CYGPATH_W) 'SynTree/TupleType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleType.cc'; fi`
    19832100
    19842101SynTree/driver_cfa_cpp-TypeofType.o: SynTree/TypeofType.cc
    1985 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeofType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo -c -o SynTree/driver_cfa_cpp-TypeofType.o `test -f 'SynTree/TypeofType.cc' || echo '$(srcdir)/'`SynTree/TypeofType.cc
    1986 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po
    1987 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeofType.cc' object='SynTree/driver_cfa_cpp-TypeofType.o' libtool=no @AMDEPBACKSLASH@
    1988 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1989 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeofType.o `test -f 'SynTree/TypeofType.cc' || echo '$(srcdir)/'`SynTree/TypeofType.cc
     2102@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeofType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo -c -o SynTree/driver_cfa_cpp-TypeofType.o `test -f 'SynTree/TypeofType.cc' || echo '$(srcdir)/'`SynTree/TypeofType.cc
     2103@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po
     2104@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeofType.cc' object='SynTree/driver_cfa_cpp-TypeofType.o' libtool=no @AMDEPBACKSLASH@
     2105@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2106@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeofType.o `test -f 'SynTree/TypeofType.cc' || echo '$(srcdir)/'`SynTree/TypeofType.cc
    19902107
    19912108SynTree/driver_cfa_cpp-TypeofType.obj: SynTree/TypeofType.cc
    1992 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeofType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo -c -o SynTree/driver_cfa_cpp-TypeofType.obj `if test -f 'SynTree/TypeofType.cc'; then $(CYGPATH_W) 'SynTree/TypeofType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeofType.cc'; fi`
    1993 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po
    1994 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeofType.cc' object='SynTree/driver_cfa_cpp-TypeofType.obj' libtool=no @AMDEPBACKSLASH@
    1995 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1996 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeofType.obj `if test -f 'SynTree/TypeofType.cc'; then $(CYGPATH_W) 'SynTree/TypeofType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeofType.cc'; fi`
     2109@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeofType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo -c -o SynTree/driver_cfa_cpp-TypeofType.obj `if test -f 'SynTree/TypeofType.cc'; then $(CYGPATH_W) 'SynTree/TypeofType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeofType.cc'; fi`
     2110@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po
     2111@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeofType.cc' object='SynTree/driver_cfa_cpp-TypeofType.obj' libtool=no @AMDEPBACKSLASH@
     2112@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2113@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeofType.obj `if test -f 'SynTree/TypeofType.cc'; then $(CYGPATH_W) 'SynTree/TypeofType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeofType.cc'; fi`
    19972114
    19982115SynTree/driver_cfa_cpp-AttrType.o: SynTree/AttrType.cc
    1999 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AttrType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo -c -o SynTree/driver_cfa_cpp-AttrType.o `test -f 'SynTree/AttrType.cc' || echo '$(srcdir)/'`SynTree/AttrType.cc
    2000 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po
    2001 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AttrType.cc' object='SynTree/driver_cfa_cpp-AttrType.o' libtool=no @AMDEPBACKSLASH@
    2002 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2003 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AttrType.o `test -f 'SynTree/AttrType.cc' || echo '$(srcdir)/'`SynTree/AttrType.cc
     2116@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AttrType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo -c -o SynTree/driver_cfa_cpp-AttrType.o `test -f 'SynTree/AttrType.cc' || echo '$(srcdir)/'`SynTree/AttrType.cc
     2117@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po
     2118@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AttrType.cc' object='SynTree/driver_cfa_cpp-AttrType.o' libtool=no @AMDEPBACKSLASH@
     2119@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2120@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AttrType.o `test -f 'SynTree/AttrType.cc' || echo '$(srcdir)/'`SynTree/AttrType.cc
    20042121
    20052122SynTree/driver_cfa_cpp-AttrType.obj: SynTree/AttrType.cc
    2006 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AttrType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo -c -o SynTree/driver_cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi`
    2007 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po
    2008 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AttrType.cc' object='SynTree/driver_cfa_cpp-AttrType.obj' libtool=no @AMDEPBACKSLASH@
    2009 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2010 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi`
     2123@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AttrType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo -c -o SynTree/driver_cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi`
     2124@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po
     2125@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AttrType.cc' object='SynTree/driver_cfa_cpp-AttrType.obj' libtool=no @AMDEPBACKSLASH@
     2126@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2127@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi`
    20112128
    20122129SynTree/driver_cfa_cpp-VarArgsType.o: SynTree/VarArgsType.cc
    2013 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarArgsType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo -c -o SynTree/driver_cfa_cpp-VarArgsType.o `test -f 'SynTree/VarArgsType.cc' || echo '$(srcdir)/'`SynTree/VarArgsType.cc
    2014 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po
    2015 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.o' libtool=no @AMDEPBACKSLASH@
    2016 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2017 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarArgsType.o `test -f 'SynTree/VarArgsType.cc' || echo '$(srcdir)/'`SynTree/VarArgsType.cc
     2130@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarArgsType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo -c -o SynTree/driver_cfa_cpp-VarArgsType.o `test -f 'SynTree/VarArgsType.cc' || echo '$(srcdir)/'`SynTree/VarArgsType.cc
     2131@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po
     2132@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.o' libtool=no @AMDEPBACKSLASH@
     2133@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2134@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarArgsType.o `test -f 'SynTree/VarArgsType.cc' || echo '$(srcdir)/'`SynTree/VarArgsType.cc
    20182135
    20192136SynTree/driver_cfa_cpp-VarArgsType.obj: SynTree/VarArgsType.cc
    2020 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarArgsType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo -c -o SynTree/driver_cfa_cpp-VarArgsType.obj `if test -f 'SynTree/VarArgsType.cc'; then $(CYGPATH_W) 'SynTree/VarArgsType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarArgsType.cc'; fi`
    2021 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po
    2022 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.obj' libtool=no @AMDEPBACKSLASH@
    2023 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2024 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarArgsType.obj `if test -f 'SynTree/VarArgsType.cc'; then $(CYGPATH_W) 'SynTree/VarArgsType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarArgsType.cc'; fi`
     2137@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarArgsType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo -c -o SynTree/driver_cfa_cpp-VarArgsType.obj `if test -f 'SynTree/VarArgsType.cc'; then $(CYGPATH_W) 'SynTree/VarArgsType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarArgsType.cc'; fi`
     2138@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po
     2139@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.obj' libtool=no @AMDEPBACKSLASH@
     2140@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2141@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarArgsType.obj `if test -f 'SynTree/VarArgsType.cc'; then $(CYGPATH_W) 'SynTree/VarArgsType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarArgsType.cc'; fi`
    20252142
    20262143SynTree/driver_cfa_cpp-Constant.o: SynTree/Constant.cc
    2027 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Constant.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo -c -o SynTree/driver_cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc
    2028 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po
    2029 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Constant.cc' object='SynTree/driver_cfa_cpp-Constant.o' libtool=no @AMDEPBACKSLASH@
    2030 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2031 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc
     2144@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Constant.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo -c -o SynTree/driver_cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc
     2145@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po
     2146@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Constant.cc' object='SynTree/driver_cfa_cpp-Constant.o' libtool=no @AMDEPBACKSLASH@
     2147@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2148@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc
    20322149
    20332150SynTree/driver_cfa_cpp-Constant.obj: SynTree/Constant.cc
    2034 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Constant.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo -c -o SynTree/driver_cfa_cpp-Constant.obj `if test -f 'SynTree/Constant.cc'; then $(CYGPATH_W) 'SynTree/Constant.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Constant.cc'; fi`
    2035 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po
    2036 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Constant.cc' object='SynTree/driver_cfa_cpp-Constant.obj' libtool=no @AMDEPBACKSLASH@
    2037 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2038 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Constant.obj `if test -f 'SynTree/Constant.cc'; then $(CYGPATH_W) 'SynTree/Constant.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Constant.cc'; fi`
     2151@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Constant.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo -c -o SynTree/driver_cfa_cpp-Constant.obj `if test -f 'SynTree/Constant.cc'; then $(CYGPATH_W) 'SynTree/Constant.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Constant.cc'; fi`
     2152@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po
     2153@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Constant.cc' object='SynTree/driver_cfa_cpp-Constant.obj' libtool=no @AMDEPBACKSLASH@
     2154@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2155@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Constant.obj `if test -f 'SynTree/Constant.cc'; then $(CYGPATH_W) 'SynTree/Constant.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Constant.cc'; fi`
    20392156
    20402157SynTree/driver_cfa_cpp-Expression.o: SynTree/Expression.cc
    2041 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Expression.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo -c -o SynTree/driver_cfa_cpp-Expression.o `test -f 'SynTree/Expression.cc' || echo '$(srcdir)/'`SynTree/Expression.cc
    2042 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Po
    2043 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Expression.cc' object='SynTree/driver_cfa_cpp-Expression.o' libtool=no @AMDEPBACKSLASH@
    2044 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2045 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Expression.o `test -f 'SynTree/Expression.cc' || echo '$(srcdir)/'`SynTree/Expression.cc
     2158@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Expression.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo -c -o SynTree/driver_cfa_cpp-Expression.o `test -f 'SynTree/Expression.cc' || echo '$(srcdir)/'`SynTree/Expression.cc
     2159@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Po
     2160@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Expression.cc' object='SynTree/driver_cfa_cpp-Expression.o' libtool=no @AMDEPBACKSLASH@
     2161@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2162@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Expression.o `test -f 'SynTree/Expression.cc' || echo '$(srcdir)/'`SynTree/Expression.cc
    20462163
    20472164SynTree/driver_cfa_cpp-Expression.obj: SynTree/Expression.cc
    2048 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Expression.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo -c -o SynTree/driver_cfa_cpp-Expression.obj `if test -f 'SynTree/Expression.cc'; then $(CYGPATH_W) 'SynTree/Expression.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Expression.cc'; fi`
    2049 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Po
    2050 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Expression.cc' object='SynTree/driver_cfa_cpp-Expression.obj' libtool=no @AMDEPBACKSLASH@
    2051 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2052 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Expression.obj `if test -f 'SynTree/Expression.cc'; then $(CYGPATH_W) 'SynTree/Expression.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Expression.cc'; fi`
     2165@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Expression.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo -c -o SynTree/driver_cfa_cpp-Expression.obj `if test -f 'SynTree/Expression.cc'; then $(CYGPATH_W) 'SynTree/Expression.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Expression.cc'; fi`
     2166@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Po
     2167@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Expression.cc' object='SynTree/driver_cfa_cpp-Expression.obj' libtool=no @AMDEPBACKSLASH@
     2168@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2169@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Expression.obj `if test -f 'SynTree/Expression.cc'; then $(CYGPATH_W) 'SynTree/Expression.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Expression.cc'; fi`
    20532170
    20542171SynTree/driver_cfa_cpp-TupleExpr.o: SynTree/TupleExpr.cc
    2055 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo -c -o SynTree/driver_cfa_cpp-TupleExpr.o `test -f 'SynTree/TupleExpr.cc' || echo '$(srcdir)/'`SynTree/TupleExpr.cc
    2056 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Po
    2057 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TupleExpr.cc' object='SynTree/driver_cfa_cpp-TupleExpr.o' libtool=no @AMDEPBACKSLASH@
    2058 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2059 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleExpr.o `test -f 'SynTree/TupleExpr.cc' || echo '$(srcdir)/'`SynTree/TupleExpr.cc
     2172@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo -c -o SynTree/driver_cfa_cpp-TupleExpr.o `test -f 'SynTree/TupleExpr.cc' || echo '$(srcdir)/'`SynTree/TupleExpr.cc
     2173@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Po
     2174@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TupleExpr.cc' object='SynTree/driver_cfa_cpp-TupleExpr.o' libtool=no @AMDEPBACKSLASH@
     2175@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2176@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleExpr.o `test -f 'SynTree/TupleExpr.cc' || echo '$(srcdir)/'`SynTree/TupleExpr.cc
    20602177
    20612178SynTree/driver_cfa_cpp-TupleExpr.obj: SynTree/TupleExpr.cc
    2062 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo -c -o SynTree/driver_cfa_cpp-TupleExpr.obj `if test -f 'SynTree/TupleExpr.cc'; then $(CYGPATH_W) 'SynTree/TupleExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleExpr.cc'; fi`
    2063 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Po
    2064 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TupleExpr.cc' object='SynTree/driver_cfa_cpp-TupleExpr.obj' libtool=no @AMDEPBACKSLASH@
    2065 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2066 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleExpr.obj `if test -f 'SynTree/TupleExpr.cc'; then $(CYGPATH_W) 'SynTree/TupleExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleExpr.cc'; fi`
     2179@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TupleExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo -c -o SynTree/driver_cfa_cpp-TupleExpr.obj `if test -f 'SynTree/TupleExpr.cc'; then $(CYGPATH_W) 'SynTree/TupleExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleExpr.cc'; fi`
     2180@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Po
     2181@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TupleExpr.cc' object='SynTree/driver_cfa_cpp-TupleExpr.obj' libtool=no @AMDEPBACKSLASH@
     2182@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2183@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TupleExpr.obj `if test -f 'SynTree/TupleExpr.cc'; then $(CYGPATH_W) 'SynTree/TupleExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleExpr.cc'; fi`
    20672184
    20682185SynTree/driver_cfa_cpp-CommaExpr.o: SynTree/CommaExpr.cc
    2069 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CommaExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo -c -o SynTree/driver_cfa_cpp-CommaExpr.o `test -f 'SynTree/CommaExpr.cc' || echo '$(srcdir)/'`SynTree/CommaExpr.cc
    2070 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po
    2071 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/CommaExpr.cc' object='SynTree/driver_cfa_cpp-CommaExpr.o' libtool=no @AMDEPBACKSLASH@
    2072 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2073 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CommaExpr.o `test -f 'SynTree/CommaExpr.cc' || echo '$(srcdir)/'`SynTree/CommaExpr.cc
     2186@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CommaExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo -c -o SynTree/driver_cfa_cpp-CommaExpr.o `test -f 'SynTree/CommaExpr.cc' || echo '$(srcdir)/'`SynTree/CommaExpr.cc
     2187@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po
     2188@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/CommaExpr.cc' object='SynTree/driver_cfa_cpp-CommaExpr.o' libtool=no @AMDEPBACKSLASH@
     2189@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2190@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CommaExpr.o `test -f 'SynTree/CommaExpr.cc' || echo '$(srcdir)/'`SynTree/CommaExpr.cc
    20742191
    20752192SynTree/driver_cfa_cpp-CommaExpr.obj: SynTree/CommaExpr.cc
    2076 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CommaExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo -c -o SynTree/driver_cfa_cpp-CommaExpr.obj `if test -f 'SynTree/CommaExpr.cc'; then $(CYGPATH_W) 'SynTree/CommaExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CommaExpr.cc'; fi`
    2077 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po
    2078 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/CommaExpr.cc' object='SynTree/driver_cfa_cpp-CommaExpr.obj' libtool=no @AMDEPBACKSLASH@
    2079 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2080 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CommaExpr.obj `if test -f 'SynTree/CommaExpr.cc'; then $(CYGPATH_W) 'SynTree/CommaExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CommaExpr.cc'; fi`
     2193@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CommaExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo -c -o SynTree/driver_cfa_cpp-CommaExpr.obj `if test -f 'SynTree/CommaExpr.cc'; then $(CYGPATH_W) 'SynTree/CommaExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CommaExpr.cc'; fi`
     2194@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po
     2195@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/CommaExpr.cc' object='SynTree/driver_cfa_cpp-CommaExpr.obj' libtool=no @AMDEPBACKSLASH@
     2196@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2197@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CommaExpr.obj `if test -f 'SynTree/CommaExpr.cc'; then $(CYGPATH_W) 'SynTree/CommaExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CommaExpr.cc'; fi`
    20812198
    20822199SynTree/driver_cfa_cpp-TypeExpr.o: SynTree/TypeExpr.cc
    2083 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo -c -o SynTree/driver_cfa_cpp-TypeExpr.o `test -f 'SynTree/TypeExpr.cc' || echo '$(srcdir)/'`SynTree/TypeExpr.cc
    2084 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Po
    2085 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeExpr.cc' object='SynTree/driver_cfa_cpp-TypeExpr.o' libtool=no @AMDEPBACKSLASH@
    2086 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2087 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeExpr.o `test -f 'SynTree/TypeExpr.cc' || echo '$(srcdir)/'`SynTree/TypeExpr.cc
     2200@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo -c -o SynTree/driver_cfa_cpp-TypeExpr.o `test -f 'SynTree/TypeExpr.cc' || echo '$(srcdir)/'`SynTree/TypeExpr.cc
     2201@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Po
     2202@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeExpr.cc' object='SynTree/driver_cfa_cpp-TypeExpr.o' libtool=no @AMDEPBACKSLASH@
     2203@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2204@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeExpr.o `test -f 'SynTree/TypeExpr.cc' || echo '$(srcdir)/'`SynTree/TypeExpr.cc
    20882205
    20892206SynTree/driver_cfa_cpp-TypeExpr.obj: SynTree/TypeExpr.cc
    2090 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo -c -o SynTree/driver_cfa_cpp-TypeExpr.obj `if test -f 'SynTree/TypeExpr.cc'; then $(CYGPATH_W) 'SynTree/TypeExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeExpr.cc'; fi`
    2091 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Po
    2092 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeExpr.cc' object='SynTree/driver_cfa_cpp-TypeExpr.obj' libtool=no @AMDEPBACKSLASH@
    2093 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2094 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeExpr.obj `if test -f 'SynTree/TypeExpr.cc'; then $(CYGPATH_W) 'SynTree/TypeExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeExpr.cc'; fi`
     2207@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo -c -o SynTree/driver_cfa_cpp-TypeExpr.obj `if test -f 'SynTree/TypeExpr.cc'; then $(CYGPATH_W) 'SynTree/TypeExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeExpr.cc'; fi`
     2208@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Po
     2209@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeExpr.cc' object='SynTree/driver_cfa_cpp-TypeExpr.obj' libtool=no @AMDEPBACKSLASH@
     2210@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2211@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeExpr.obj `if test -f 'SynTree/TypeExpr.cc'; then $(CYGPATH_W) 'SynTree/TypeExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeExpr.cc'; fi`
    20952212
    20962213SynTree/driver_cfa_cpp-ApplicationExpr.o: SynTree/ApplicationExpr.cc
    2097 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ApplicationExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo -c -o SynTree/driver_cfa_cpp-ApplicationExpr.o `test -f 'SynTree/ApplicationExpr.cc' || echo '$(srcdir)/'`SynTree/ApplicationExpr.cc
    2098 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Po
    2099 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ApplicationExpr.cc' object='SynTree/driver_cfa_cpp-ApplicationExpr.o' libtool=no @AMDEPBACKSLASH@
    2100 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2101 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ApplicationExpr.o `test -f 'SynTree/ApplicationExpr.cc' || echo '$(srcdir)/'`SynTree/ApplicationExpr.cc
     2214@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ApplicationExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo -c -o SynTree/driver_cfa_cpp-ApplicationExpr.o `test -f 'SynTree/ApplicationExpr.cc' || echo '$(srcdir)/'`SynTree/ApplicationExpr.cc
     2215@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Po
     2216@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ApplicationExpr.cc' object='SynTree/driver_cfa_cpp-ApplicationExpr.o' libtool=no @AMDEPBACKSLASH@
     2217@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2218@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ApplicationExpr.o `test -f 'SynTree/ApplicationExpr.cc' || echo '$(srcdir)/'`SynTree/ApplicationExpr.cc
    21022219
    21032220SynTree/driver_cfa_cpp-ApplicationExpr.obj: SynTree/ApplicationExpr.cc
    2104 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ApplicationExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo -c -o SynTree/driver_cfa_cpp-ApplicationExpr.obj `if test -f 'SynTree/ApplicationExpr.cc'; then $(CYGPATH_W) 'SynTree/ApplicationExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ApplicationExpr.cc'; fi`
    2105 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Po
    2106 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ApplicationExpr.cc' object='SynTree/driver_cfa_cpp-ApplicationExpr.obj' libtool=no @AMDEPBACKSLASH@
    2107 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2108 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ApplicationExpr.obj `if test -f 'SynTree/ApplicationExpr.cc'; then $(CYGPATH_W) 'SynTree/ApplicationExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ApplicationExpr.cc'; fi`
     2221@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ApplicationExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo -c -o SynTree/driver_cfa_cpp-ApplicationExpr.obj `if test -f 'SynTree/ApplicationExpr.cc'; then $(CYGPATH_W) 'SynTree/ApplicationExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ApplicationExpr.cc'; fi`
     2222@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Po
     2223@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ApplicationExpr.cc' object='SynTree/driver_cfa_cpp-ApplicationExpr.obj' libtool=no @AMDEPBACKSLASH@
     2224@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2225@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ApplicationExpr.obj `if test -f 'SynTree/ApplicationExpr.cc'; then $(CYGPATH_W) 'SynTree/ApplicationExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ApplicationExpr.cc'; fi`
    21092226
    21102227SynTree/driver_cfa_cpp-AddressExpr.o: SynTree/AddressExpr.cc
    2111 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AddressExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo -c -o SynTree/driver_cfa_cpp-AddressExpr.o `test -f 'SynTree/AddressExpr.cc' || echo '$(srcdir)/'`SynTree/AddressExpr.cc
    2112 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po
    2113 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AddressExpr.cc' object='SynTree/driver_cfa_cpp-AddressExpr.o' libtool=no @AMDEPBACKSLASH@
    2114 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2115 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AddressExpr.o `test -f 'SynTree/AddressExpr.cc' || echo '$(srcdir)/'`SynTree/AddressExpr.cc
     2228@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AddressExpr.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo -c -o SynTree/driver_cfa_cpp-AddressExpr.o `test -f 'SynTree/AddressExpr.cc' || echo '$(srcdir)/'`SynTree/AddressExpr.cc
     2229@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po
     2230@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AddressExpr.cc' object='SynTree/driver_cfa_cpp-AddressExpr.o' libtool=no @AMDEPBACKSLASH@
     2231@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2232@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AddressExpr.o `test -f 'SynTree/AddressExpr.cc' || echo '$(srcdir)/'`SynTree/AddressExpr.cc
    21162233
    21172234SynTree/driver_cfa_cpp-AddressExpr.obj: SynTree/AddressExpr.cc
    2118 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AddressExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo -c -o SynTree/driver_cfa_cpp-AddressExpr.obj `if test -f 'SynTree/AddressExpr.cc'; then $(CYGPATH_W) 'SynTree/AddressExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddressExpr.cc'; fi`
    2119 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po
    2120 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AddressExpr.cc' object='SynTree/driver_cfa_cpp-AddressExpr.obj' libtool=no @AMDEPBACKSLASH@
    2121 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2122 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AddressExpr.obj `if test -f 'SynTree/AddressExpr.cc'; then $(CYGPATH_W) 'SynTree/AddressExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddressExpr.cc'; fi`
     2235@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AddressExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo -c -o SynTree/driver_cfa_cpp-AddressExpr.obj `if test -f 'SynTree/AddressExpr.cc'; then $(CYGPATH_W) 'SynTree/AddressExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddressExpr.cc'; fi`
     2236@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po
     2237@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AddressExpr.cc' object='SynTree/driver_cfa_cpp-AddressExpr.obj' libtool=no @AMDEPBACKSLASH@
     2238@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2239@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AddressExpr.obj `if test -f 'SynTree/AddressExpr.cc'; then $(CYGPATH_W) 'SynTree/AddressExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddressExpr.cc'; fi`
    21232240
    21242241SynTree/driver_cfa_cpp-Statement.o: SynTree/Statement.cc
    2125 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Statement.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo -c -o SynTree/driver_cfa_cpp-Statement.o `test -f 'SynTree/Statement.cc' || echo '$(srcdir)/'`SynTree/Statement.cc
    2126 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Po
    2127 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Statement.cc' object='SynTree/driver_cfa_cpp-Statement.o' libtool=no @AMDEPBACKSLASH@
    2128 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2129 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Statement.o `test -f 'SynTree/Statement.cc' || echo '$(srcdir)/'`SynTree/Statement.cc
     2242@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Statement.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo -c -o SynTree/driver_cfa_cpp-Statement.o `test -f 'SynTree/Statement.cc' || echo '$(srcdir)/'`SynTree/Statement.cc
     2243@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Po
     2244@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Statement.cc' object='SynTree/driver_cfa_cpp-Statement.o' libtool=no @AMDEPBACKSLASH@
     2245@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2246@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Statement.o `test -f 'SynTree/Statement.cc' || echo '$(srcdir)/'`SynTree/Statement.cc
    21302247
    21312248SynTree/driver_cfa_cpp-Statement.obj: SynTree/Statement.cc
    2132 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Statement.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo -c -o SynTree/driver_cfa_cpp-Statement.obj `if test -f 'SynTree/Statement.cc'; then $(CYGPATH_W) 'SynTree/Statement.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Statement.cc'; fi`
    2133 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Po
    2134 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Statement.cc' object='SynTree/driver_cfa_cpp-Statement.obj' libtool=no @AMDEPBACKSLASH@
    2135 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2136 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Statement.obj `if test -f 'SynTree/Statement.cc'; then $(CYGPATH_W) 'SynTree/Statement.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Statement.cc'; fi`
     2249@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Statement.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo -c -o SynTree/driver_cfa_cpp-Statement.obj `if test -f 'SynTree/Statement.cc'; then $(CYGPATH_W) 'SynTree/Statement.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Statement.cc'; fi`
     2250@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Po
     2251@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Statement.cc' object='SynTree/driver_cfa_cpp-Statement.obj' libtool=no @AMDEPBACKSLASH@
     2252@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2253@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Statement.obj `if test -f 'SynTree/Statement.cc'; then $(CYGPATH_W) 'SynTree/Statement.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Statement.cc'; fi`
    21372254
    21382255SynTree/driver_cfa_cpp-CompoundStmt.o: SynTree/CompoundStmt.cc
    2139 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CompoundStmt.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo -c -o SynTree/driver_cfa_cpp-CompoundStmt.o `test -f 'SynTree/CompoundStmt.cc' || echo '$(srcdir)/'`SynTree/CompoundStmt.cc
    2140 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po
    2141 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/CompoundStmt.cc' object='SynTree/driver_cfa_cpp-CompoundStmt.o' libtool=no @AMDEPBACKSLASH@
    2142 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2143 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CompoundStmt.o `test -f 'SynTree/CompoundStmt.cc' || echo '$(srcdir)/'`SynTree/CompoundStmt.cc
     2256@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CompoundStmt.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo -c -o SynTree/driver_cfa_cpp-CompoundStmt.o `test -f 'SynTree/CompoundStmt.cc' || echo '$(srcdir)/'`SynTree/CompoundStmt.cc
     2257@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po
     2258@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/CompoundStmt.cc' object='SynTree/driver_cfa_cpp-CompoundStmt.o' libtool=no @AMDEPBACKSLASH@
     2259@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2260@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CompoundStmt.o `test -f 'SynTree/CompoundStmt.cc' || echo '$(srcdir)/'`SynTree/CompoundStmt.cc
    21442261
    21452262SynTree/driver_cfa_cpp-CompoundStmt.obj: SynTree/CompoundStmt.cc
    2146 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CompoundStmt.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo -c -o SynTree/driver_cfa_cpp-CompoundStmt.obj `if test -f 'SynTree/CompoundStmt.cc'; then $(CYGPATH_W) 'SynTree/CompoundStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CompoundStmt.cc'; fi`
    2147 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po
    2148 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/CompoundStmt.cc' object='SynTree/driver_cfa_cpp-CompoundStmt.obj' libtool=no @AMDEPBACKSLASH@
    2149 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2150 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CompoundStmt.obj `if test -f 'SynTree/CompoundStmt.cc'; then $(CYGPATH_W) 'SynTree/CompoundStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CompoundStmt.cc'; fi`
     2263@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CompoundStmt.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo -c -o SynTree/driver_cfa_cpp-CompoundStmt.obj `if test -f 'SynTree/CompoundStmt.cc'; then $(CYGPATH_W) 'SynTree/CompoundStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CompoundStmt.cc'; fi`
     2264@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po
     2265@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/CompoundStmt.cc' object='SynTree/driver_cfa_cpp-CompoundStmt.obj' libtool=no @AMDEPBACKSLASH@
     2266@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2267@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CompoundStmt.obj `if test -f 'SynTree/CompoundStmt.cc'; then $(CYGPATH_W) 'SynTree/CompoundStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CompoundStmt.cc'; fi`
    21512268
    21522269SynTree/driver_cfa_cpp-DeclStmt.o: SynTree/DeclStmt.cc
    2153 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclStmt.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo -c -o SynTree/driver_cfa_cpp-DeclStmt.o `test -f 'SynTree/DeclStmt.cc' || echo '$(srcdir)/'`SynTree/DeclStmt.cc
    2154 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po
    2155 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/DeclStmt.cc' object='SynTree/driver_cfa_cpp-DeclStmt.o' libtool=no @AMDEPBACKSLASH@
    2156 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2157 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclStmt.o `test -f 'SynTree/DeclStmt.cc' || echo '$(srcdir)/'`SynTree/DeclStmt.cc
     2270@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclStmt.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo -c -o SynTree/driver_cfa_cpp-DeclStmt.o `test -f 'SynTree/DeclStmt.cc' || echo '$(srcdir)/'`SynTree/DeclStmt.cc
     2271@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po
     2272@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/DeclStmt.cc' object='SynTree/driver_cfa_cpp-DeclStmt.o' libtool=no @AMDEPBACKSLASH@
     2273@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2274@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclStmt.o `test -f 'SynTree/DeclStmt.cc' || echo '$(srcdir)/'`SynTree/DeclStmt.cc
    21582275
    21592276SynTree/driver_cfa_cpp-DeclStmt.obj: SynTree/DeclStmt.cc
    2160 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclStmt.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo -c -o SynTree/driver_cfa_cpp-DeclStmt.obj `if test -f 'SynTree/DeclStmt.cc'; then $(CYGPATH_W) 'SynTree/DeclStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclStmt.cc'; fi`
    2161 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po
    2162 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/DeclStmt.cc' object='SynTree/driver_cfa_cpp-DeclStmt.obj' libtool=no @AMDEPBACKSLASH@
    2163 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2164 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclStmt.obj `if test -f 'SynTree/DeclStmt.cc'; then $(CYGPATH_W) 'SynTree/DeclStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclStmt.cc'; fi`
     2277@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclStmt.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo -c -o SynTree/driver_cfa_cpp-DeclStmt.obj `if test -f 'SynTree/DeclStmt.cc'; then $(CYGPATH_W) 'SynTree/DeclStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclStmt.cc'; fi`
     2278@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po
     2279@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/DeclStmt.cc' object='SynTree/driver_cfa_cpp-DeclStmt.obj' libtool=no @AMDEPBACKSLASH@
     2280@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2281@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclStmt.obj `if test -f 'SynTree/DeclStmt.cc'; then $(CYGPATH_W) 'SynTree/DeclStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclStmt.cc'; fi`
    21652282
    21662283SynTree/driver_cfa_cpp-Declaration.o: SynTree/Declaration.cc
    2167 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Declaration.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo -c -o SynTree/driver_cfa_cpp-Declaration.o `test -f 'SynTree/Declaration.cc' || echo '$(srcdir)/'`SynTree/Declaration.cc
    2168 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po
    2169 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Declaration.cc' object='SynTree/driver_cfa_cpp-Declaration.o' libtool=no @AMDEPBACKSLASH@
    2170 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2171 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Declaration.o `test -f 'SynTree/Declaration.cc' || echo '$(srcdir)/'`SynTree/Declaration.cc
     2284@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Declaration.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo -c -o SynTree/driver_cfa_cpp-Declaration.o `test -f 'SynTree/Declaration.cc' || echo '$(srcdir)/'`SynTree/Declaration.cc
     2285@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po
     2286@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Declaration.cc' object='SynTree/driver_cfa_cpp-Declaration.o' libtool=no @AMDEPBACKSLASH@
     2287@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2288@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Declaration.o `test -f 'SynTree/Declaration.cc' || echo '$(srcdir)/'`SynTree/Declaration.cc
    21722289
    21732290SynTree/driver_cfa_cpp-Declaration.obj: SynTree/Declaration.cc
    2174 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Declaration.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo -c -o SynTree/driver_cfa_cpp-Declaration.obj `if test -f 'SynTree/Declaration.cc'; then $(CYGPATH_W) 'SynTree/Declaration.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Declaration.cc'; fi`
    2175 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po
    2176 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Declaration.cc' object='SynTree/driver_cfa_cpp-Declaration.obj' libtool=no @AMDEPBACKSLASH@
    2177 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2178 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Declaration.obj `if test -f 'SynTree/Declaration.cc'; then $(CYGPATH_W) 'SynTree/Declaration.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Declaration.cc'; fi`
     2291@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Declaration.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo -c -o SynTree/driver_cfa_cpp-Declaration.obj `if test -f 'SynTree/Declaration.cc'; then $(CYGPATH_W) 'SynTree/Declaration.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Declaration.cc'; fi`
     2292@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po
     2293@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Declaration.cc' object='SynTree/driver_cfa_cpp-Declaration.obj' libtool=no @AMDEPBACKSLASH@
     2294@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2295@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Declaration.obj `if test -f 'SynTree/Declaration.cc'; then $(CYGPATH_W) 'SynTree/Declaration.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Declaration.cc'; fi`
    21792296
    21802297SynTree/driver_cfa_cpp-DeclarationWithType.o: SynTree/DeclarationWithType.cc
    2181 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclarationWithType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo -c -o SynTree/driver_cfa_cpp-DeclarationWithType.o `test -f 'SynTree/DeclarationWithType.cc' || echo '$(srcdir)/'`SynTree/DeclarationWithType.cc
    2182 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Po
    2183 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/DeclarationWithType.cc' object='SynTree/driver_cfa_cpp-DeclarationWithType.o' libtool=no @AMDEPBACKSLASH@
    2184 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2185 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclarationWithType.o `test -f 'SynTree/DeclarationWithType.cc' || echo '$(srcdir)/'`SynTree/DeclarationWithType.cc
     2298@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclarationWithType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo -c -o SynTree/driver_cfa_cpp-DeclarationWithType.o `test -f 'SynTree/DeclarationWithType.cc' || echo '$(srcdir)/'`SynTree/DeclarationWithType.cc
     2299@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Po
     2300@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/DeclarationWithType.cc' object='SynTree/driver_cfa_cpp-DeclarationWithType.o' libtool=no @AMDEPBACKSLASH@
     2301@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2302@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclarationWithType.o `test -f 'SynTree/DeclarationWithType.cc' || echo '$(srcdir)/'`SynTree/DeclarationWithType.cc
    21862303
    21872304SynTree/driver_cfa_cpp-DeclarationWithType.obj: SynTree/DeclarationWithType.cc
    2188 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclarationWithType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo -c -o SynTree/driver_cfa_cpp-DeclarationWithType.obj `if test -f 'SynTree/DeclarationWithType.cc'; then $(CYGPATH_W) 'SynTree/DeclarationWithType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclarationWithType.cc'; fi`
    2189 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Po
    2190 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/DeclarationWithType.cc' object='SynTree/driver_cfa_cpp-DeclarationWithType.obj' libtool=no @AMDEPBACKSLASH@
    2191 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2192 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclarationWithType.obj `if test -f 'SynTree/DeclarationWithType.cc'; then $(CYGPATH_W) 'SynTree/DeclarationWithType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclarationWithType.cc'; fi`
     2305@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclarationWithType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo -c -o SynTree/driver_cfa_cpp-DeclarationWithType.obj `if test -f 'SynTree/DeclarationWithType.cc'; then $(CYGPATH_W) 'SynTree/DeclarationWithType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclarationWithType.cc'; fi`
     2306@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Po
     2307@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/DeclarationWithType.cc' object='SynTree/driver_cfa_cpp-DeclarationWithType.obj' libtool=no @AMDEPBACKSLASH@
     2308@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2309@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclarationWithType.obj `if test -f 'SynTree/DeclarationWithType.cc'; then $(CYGPATH_W) 'SynTree/DeclarationWithType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclarationWithType.cc'; fi`
    21932310
    21942311SynTree/driver_cfa_cpp-ObjectDecl.o: SynTree/ObjectDecl.cc
    2195 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ObjectDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo -c -o SynTree/driver_cfa_cpp-ObjectDecl.o `test -f 'SynTree/ObjectDecl.cc' || echo '$(srcdir)/'`SynTree/ObjectDecl.cc
    2196 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Po
    2197 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ObjectDecl.cc' object='SynTree/driver_cfa_cpp-ObjectDecl.o' libtool=no @AMDEPBACKSLASH@
    2198 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2199 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ObjectDecl.o `test -f 'SynTree/ObjectDecl.cc' || echo '$(srcdir)/'`SynTree/ObjectDecl.cc
     2312@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ObjectDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo -c -o SynTree/driver_cfa_cpp-ObjectDecl.o `test -f 'SynTree/ObjectDecl.cc' || echo '$(srcdir)/'`SynTree/ObjectDecl.cc
     2313@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Po
     2314@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ObjectDecl.cc' object='SynTree/driver_cfa_cpp-ObjectDecl.o' libtool=no @AMDEPBACKSLASH@
     2315@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2316@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ObjectDecl.o `test -f 'SynTree/ObjectDecl.cc' || echo '$(srcdir)/'`SynTree/ObjectDecl.cc
    22002317
    22012318SynTree/driver_cfa_cpp-ObjectDecl.obj: SynTree/ObjectDecl.cc
    2202 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ObjectDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo -c -o SynTree/driver_cfa_cpp-ObjectDecl.obj `if test -f 'SynTree/ObjectDecl.cc'; then $(CYGPATH_W) 'SynTree/ObjectDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ObjectDecl.cc'; fi`
    2203 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Po
    2204 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ObjectDecl.cc' object='SynTree/driver_cfa_cpp-ObjectDecl.obj' libtool=no @AMDEPBACKSLASH@
    2205 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2206 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ObjectDecl.obj `if test -f 'SynTree/ObjectDecl.cc'; then $(CYGPATH_W) 'SynTree/ObjectDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ObjectDecl.cc'; fi`
     2319@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-ObjectDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo -c -o SynTree/driver_cfa_cpp-ObjectDecl.obj `if test -f 'SynTree/ObjectDecl.cc'; then $(CYGPATH_W) 'SynTree/ObjectDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ObjectDecl.cc'; fi`
     2320@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Po
     2321@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ObjectDecl.cc' object='SynTree/driver_cfa_cpp-ObjectDecl.obj' libtool=no @AMDEPBACKSLASH@
     2322@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2323@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-ObjectDecl.obj `if test -f 'SynTree/ObjectDecl.cc'; then $(CYGPATH_W) 'SynTree/ObjectDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ObjectDecl.cc'; fi`
    22072324
    22082325SynTree/driver_cfa_cpp-FunctionDecl.o: SynTree/FunctionDecl.cc
    2209 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo -c -o SynTree/driver_cfa_cpp-FunctionDecl.o `test -f 'SynTree/FunctionDecl.cc' || echo '$(srcdir)/'`SynTree/FunctionDecl.cc
    2210 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Po
    2211 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/FunctionDecl.cc' object='SynTree/driver_cfa_cpp-FunctionDecl.o' libtool=no @AMDEPBACKSLASH@
    2212 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2213 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionDecl.o `test -f 'SynTree/FunctionDecl.cc' || echo '$(srcdir)/'`SynTree/FunctionDecl.cc
     2326@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo -c -o SynTree/driver_cfa_cpp-FunctionDecl.o `test -f 'SynTree/FunctionDecl.cc' || echo '$(srcdir)/'`SynTree/FunctionDecl.cc
     2327@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Po
     2328@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/FunctionDecl.cc' object='SynTree/driver_cfa_cpp-FunctionDecl.o' libtool=no @AMDEPBACKSLASH@
     2329@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2330@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionDecl.o `test -f 'SynTree/FunctionDecl.cc' || echo '$(srcdir)/'`SynTree/FunctionDecl.cc
    22142331
    22152332SynTree/driver_cfa_cpp-FunctionDecl.obj: SynTree/FunctionDecl.cc
    2216 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo -c -o SynTree/driver_cfa_cpp-FunctionDecl.obj `if test -f 'SynTree/FunctionDecl.cc'; then $(CYGPATH_W) 'SynTree/FunctionDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionDecl.cc'; fi`
    2217 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Po
    2218 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/FunctionDecl.cc' object='SynTree/driver_cfa_cpp-FunctionDecl.obj' libtool=no @AMDEPBACKSLASH@
    2219 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2220 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionDecl.obj `if test -f 'SynTree/FunctionDecl.cc'; then $(CYGPATH_W) 'SynTree/FunctionDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionDecl.cc'; fi`
     2333@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-FunctionDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo -c -o SynTree/driver_cfa_cpp-FunctionDecl.obj `if test -f 'SynTree/FunctionDecl.cc'; then $(CYGPATH_W) 'SynTree/FunctionDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionDecl.cc'; fi`
     2334@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Po
     2335@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/FunctionDecl.cc' object='SynTree/driver_cfa_cpp-FunctionDecl.obj' libtool=no @AMDEPBACKSLASH@
     2336@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2337@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-FunctionDecl.obj `if test -f 'SynTree/FunctionDecl.cc'; then $(CYGPATH_W) 'SynTree/FunctionDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionDecl.cc'; fi`
    22212338
    22222339SynTree/driver_cfa_cpp-AggregateDecl.o: SynTree/AggregateDecl.cc
    2223 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AggregateDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo -c -o SynTree/driver_cfa_cpp-AggregateDecl.o `test -f 'SynTree/AggregateDecl.cc' || echo '$(srcdir)/'`SynTree/AggregateDecl.cc
    2224 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po
    2225 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AggregateDecl.cc' object='SynTree/driver_cfa_cpp-AggregateDecl.o' libtool=no @AMDEPBACKSLASH@
    2226 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2227 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AggregateDecl.o `test -f 'SynTree/AggregateDecl.cc' || echo '$(srcdir)/'`SynTree/AggregateDecl.cc
     2340@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AggregateDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo -c -o SynTree/driver_cfa_cpp-AggregateDecl.o `test -f 'SynTree/AggregateDecl.cc' || echo '$(srcdir)/'`SynTree/AggregateDecl.cc
     2341@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po
     2342@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AggregateDecl.cc' object='SynTree/driver_cfa_cpp-AggregateDecl.o' libtool=no @AMDEPBACKSLASH@
     2343@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2344@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AggregateDecl.o `test -f 'SynTree/AggregateDecl.cc' || echo '$(srcdir)/'`SynTree/AggregateDecl.cc
    22282345
    22292346SynTree/driver_cfa_cpp-AggregateDecl.obj: SynTree/AggregateDecl.cc
    2230 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AggregateDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo -c -o SynTree/driver_cfa_cpp-AggregateDecl.obj `if test -f 'SynTree/AggregateDecl.cc'; then $(CYGPATH_W) 'SynTree/AggregateDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AggregateDecl.cc'; fi`
    2231 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po
    2232 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AggregateDecl.cc' object='SynTree/driver_cfa_cpp-AggregateDecl.obj' libtool=no @AMDEPBACKSLASH@
    2233 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2234 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AggregateDecl.obj `if test -f 'SynTree/AggregateDecl.cc'; then $(CYGPATH_W) 'SynTree/AggregateDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AggregateDecl.cc'; fi`
     2347@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AggregateDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo -c -o SynTree/driver_cfa_cpp-AggregateDecl.obj `if test -f 'SynTree/AggregateDecl.cc'; then $(CYGPATH_W) 'SynTree/AggregateDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AggregateDecl.cc'; fi`
     2348@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po
     2349@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AggregateDecl.cc' object='SynTree/driver_cfa_cpp-AggregateDecl.obj' libtool=no @AMDEPBACKSLASH@
     2350@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2351@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AggregateDecl.obj `if test -f 'SynTree/AggregateDecl.cc'; then $(CYGPATH_W) 'SynTree/AggregateDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AggregateDecl.cc'; fi`
    22352352
    22362353SynTree/driver_cfa_cpp-NamedTypeDecl.o: SynTree/NamedTypeDecl.cc
    2237 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-NamedTypeDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.o `test -f 'SynTree/NamedTypeDecl.cc' || echo '$(srcdir)/'`SynTree/NamedTypeDecl.cc
    2238 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Po
    2239 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/NamedTypeDecl.cc' object='SynTree/driver_cfa_cpp-NamedTypeDecl.o' libtool=no @AMDEPBACKSLASH@
    2240 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2241 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.o `test -f 'SynTree/NamedTypeDecl.cc' || echo '$(srcdir)/'`SynTree/NamedTypeDecl.cc
     2354@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-NamedTypeDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.o `test -f 'SynTree/NamedTypeDecl.cc' || echo '$(srcdir)/'`SynTree/NamedTypeDecl.cc
     2355@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Po
     2356@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/NamedTypeDecl.cc' object='SynTree/driver_cfa_cpp-NamedTypeDecl.o' libtool=no @AMDEPBACKSLASH@
     2357@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2358@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.o `test -f 'SynTree/NamedTypeDecl.cc' || echo '$(srcdir)/'`SynTree/NamedTypeDecl.cc
    22422359
    22432360SynTree/driver_cfa_cpp-NamedTypeDecl.obj: SynTree/NamedTypeDecl.cc
    2244 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-NamedTypeDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.obj `if test -f 'SynTree/NamedTypeDecl.cc'; then $(CYGPATH_W) 'SynTree/NamedTypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/NamedTypeDecl.cc'; fi`
    2245 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Po
    2246 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/NamedTypeDecl.cc' object='SynTree/driver_cfa_cpp-NamedTypeDecl.obj' libtool=no @AMDEPBACKSLASH@
    2247 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2248 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.obj `if test -f 'SynTree/NamedTypeDecl.cc'; then $(CYGPATH_W) 'SynTree/NamedTypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/NamedTypeDecl.cc'; fi`
     2361@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-NamedTypeDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.obj `if test -f 'SynTree/NamedTypeDecl.cc'; then $(CYGPATH_W) 'SynTree/NamedTypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/NamedTypeDecl.cc'; fi`
     2362@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Po
     2363@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/NamedTypeDecl.cc' object='SynTree/driver_cfa_cpp-NamedTypeDecl.obj' libtool=no @AMDEPBACKSLASH@
     2364@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2365@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-NamedTypeDecl.obj `if test -f 'SynTree/NamedTypeDecl.cc'; then $(CYGPATH_W) 'SynTree/NamedTypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/NamedTypeDecl.cc'; fi`
    22492366
    22502367SynTree/driver_cfa_cpp-TypeDecl.o: SynTree/TypeDecl.cc
    2251 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-TypeDecl.o `test -f 'SynTree/TypeDecl.cc' || echo '$(srcdir)/'`SynTree/TypeDecl.cc
    2252 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Po
    2253 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeDecl.cc' object='SynTree/driver_cfa_cpp-TypeDecl.o' libtool=no @AMDEPBACKSLASH@
    2254 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2255 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeDecl.o `test -f 'SynTree/TypeDecl.cc' || echo '$(srcdir)/'`SynTree/TypeDecl.cc
     2368@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeDecl.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-TypeDecl.o `test -f 'SynTree/TypeDecl.cc' || echo '$(srcdir)/'`SynTree/TypeDecl.cc
     2369@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Po
     2370@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeDecl.cc' object='SynTree/driver_cfa_cpp-TypeDecl.o' libtool=no @AMDEPBACKSLASH@
     2371@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2372@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeDecl.o `test -f 'SynTree/TypeDecl.cc' || echo '$(srcdir)/'`SynTree/TypeDecl.cc
    22562373
    22572374SynTree/driver_cfa_cpp-TypeDecl.obj: SynTree/TypeDecl.cc
    2258 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-TypeDecl.obj `if test -f 'SynTree/TypeDecl.cc'; then $(CYGPATH_W) 'SynTree/TypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeDecl.cc'; fi`
    2259 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Po
    2260 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeDecl.cc' object='SynTree/driver_cfa_cpp-TypeDecl.obj' libtool=no @AMDEPBACKSLASH@
    2261 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2262 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeDecl.obj `if test -f 'SynTree/TypeDecl.cc'; then $(CYGPATH_W) 'SynTree/TypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeDecl.cc'; fi`
     2375@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo -c -o SynTree/driver_cfa_cpp-TypeDecl.obj `if test -f 'SynTree/TypeDecl.cc'; then $(CYGPATH_W) 'SynTree/TypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeDecl.cc'; fi`
     2376@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Po
     2377@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeDecl.cc' object='SynTree/driver_cfa_cpp-TypeDecl.obj' libtool=no @AMDEPBACKSLASH@
     2378@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2379@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeDecl.obj `if test -f 'SynTree/TypeDecl.cc'; then $(CYGPATH_W) 'SynTree/TypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeDecl.cc'; fi`
    22632380
    22642381SynTree/driver_cfa_cpp-Initializer.o: SynTree/Initializer.cc
    2265 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Initializer.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo -c -o SynTree/driver_cfa_cpp-Initializer.o `test -f 'SynTree/Initializer.cc' || echo '$(srcdir)/'`SynTree/Initializer.cc
    2266 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Po
    2267 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Initializer.cc' object='SynTree/driver_cfa_cpp-Initializer.o' libtool=no @AMDEPBACKSLASH@
    2268 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2269 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Initializer.o `test -f 'SynTree/Initializer.cc' || echo '$(srcdir)/'`SynTree/Initializer.cc
     2382@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Initializer.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo -c -o SynTree/driver_cfa_cpp-Initializer.o `test -f 'SynTree/Initializer.cc' || echo '$(srcdir)/'`SynTree/Initializer.cc
     2383@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Po
     2384@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Initializer.cc' object='SynTree/driver_cfa_cpp-Initializer.o' libtool=no @AMDEPBACKSLASH@
     2385@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2386@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Initializer.o `test -f 'SynTree/Initializer.cc' || echo '$(srcdir)/'`SynTree/Initializer.cc
    22702387
    22712388SynTree/driver_cfa_cpp-Initializer.obj: SynTree/Initializer.cc
    2272 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Initializer.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo -c -o SynTree/driver_cfa_cpp-Initializer.obj `if test -f 'SynTree/Initializer.cc'; then $(CYGPATH_W) 'SynTree/Initializer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Initializer.cc'; fi`
    2273 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Po
    2274 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Initializer.cc' object='SynTree/driver_cfa_cpp-Initializer.obj' libtool=no @AMDEPBACKSLASH@
    2275 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2276 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Initializer.obj `if test -f 'SynTree/Initializer.cc'; then $(CYGPATH_W) 'SynTree/Initializer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Initializer.cc'; fi`
     2389@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Initializer.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo -c -o SynTree/driver_cfa_cpp-Initializer.obj `if test -f 'SynTree/Initializer.cc'; then $(CYGPATH_W) 'SynTree/Initializer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Initializer.cc'; fi`
     2390@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Po
     2391@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Initializer.cc' object='SynTree/driver_cfa_cpp-Initializer.obj' libtool=no @AMDEPBACKSLASH@
     2392@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2393@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Initializer.obj `if test -f 'SynTree/Initializer.cc'; then $(CYGPATH_W) 'SynTree/Initializer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Initializer.cc'; fi`
    22772394
    22782395SynTree/driver_cfa_cpp-Visitor.o: SynTree/Visitor.cc
    2279 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Visitor.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Tpo -c -o SynTree/driver_cfa_cpp-Visitor.o `test -f 'SynTree/Visitor.cc' || echo '$(srcdir)/'`SynTree/Visitor.cc
    2280 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Po
    2281 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Visitor.cc' object='SynTree/driver_cfa_cpp-Visitor.o' libtool=no @AMDEPBACKSLASH@
    2282 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2283 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Visitor.o `test -f 'SynTree/Visitor.cc' || echo '$(srcdir)/'`SynTree/Visitor.cc
     2396@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Visitor.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Tpo -c -o SynTree/driver_cfa_cpp-Visitor.o `test -f 'SynTree/Visitor.cc' || echo '$(srcdir)/'`SynTree/Visitor.cc
     2397@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Po
     2398@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Visitor.cc' object='SynTree/driver_cfa_cpp-Visitor.o' libtool=no @AMDEPBACKSLASH@
     2399@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2400@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Visitor.o `test -f 'SynTree/Visitor.cc' || echo '$(srcdir)/'`SynTree/Visitor.cc
    22842401
    22852402SynTree/driver_cfa_cpp-Visitor.obj: SynTree/Visitor.cc
    2286 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Visitor.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Tpo -c -o SynTree/driver_cfa_cpp-Visitor.obj `if test -f 'SynTree/Visitor.cc'; then $(CYGPATH_W) 'SynTree/Visitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Visitor.cc'; fi`
    2287 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Po
    2288 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Visitor.cc' object='SynTree/driver_cfa_cpp-Visitor.obj' libtool=no @AMDEPBACKSLASH@
    2289 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2290 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Visitor.obj `if test -f 'SynTree/Visitor.cc'; then $(CYGPATH_W) 'SynTree/Visitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Visitor.cc'; fi`
     2403@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Visitor.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Tpo -c -o SynTree/driver_cfa_cpp-Visitor.obj `if test -f 'SynTree/Visitor.cc'; then $(CYGPATH_W) 'SynTree/Visitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Visitor.cc'; fi`
     2404@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Po
     2405@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Visitor.cc' object='SynTree/driver_cfa_cpp-Visitor.obj' libtool=no @AMDEPBACKSLASH@
     2406@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2407@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Visitor.obj `if test -f 'SynTree/Visitor.cc'; then $(CYGPATH_W) 'SynTree/Visitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Visitor.cc'; fi`
    22912408
    22922409SynTree/driver_cfa_cpp-Mutator.o: SynTree/Mutator.cc
    2293 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Mutator.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Tpo -c -o SynTree/driver_cfa_cpp-Mutator.o `test -f 'SynTree/Mutator.cc' || echo '$(srcdir)/'`SynTree/Mutator.cc
    2294 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Po
    2295 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Mutator.cc' object='SynTree/driver_cfa_cpp-Mutator.o' libtool=no @AMDEPBACKSLASH@
    2296 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2297 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Mutator.o `test -f 'SynTree/Mutator.cc' || echo '$(srcdir)/'`SynTree/Mutator.cc
     2410@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Mutator.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Tpo -c -o SynTree/driver_cfa_cpp-Mutator.o `test -f 'SynTree/Mutator.cc' || echo '$(srcdir)/'`SynTree/Mutator.cc
     2411@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Po
     2412@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Mutator.cc' object='SynTree/driver_cfa_cpp-Mutator.o' libtool=no @AMDEPBACKSLASH@
     2413@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2414@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Mutator.o `test -f 'SynTree/Mutator.cc' || echo '$(srcdir)/'`SynTree/Mutator.cc
    22982415
    22992416SynTree/driver_cfa_cpp-Mutator.obj: SynTree/Mutator.cc
    2300 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Mutator.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Tpo -c -o SynTree/driver_cfa_cpp-Mutator.obj `if test -f 'SynTree/Mutator.cc'; then $(CYGPATH_W) 'SynTree/Mutator.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Mutator.cc'; fi`
    2301 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Po
    2302 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Mutator.cc' object='SynTree/driver_cfa_cpp-Mutator.obj' libtool=no @AMDEPBACKSLASH@
    2303 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2304 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Mutator.obj `if test -f 'SynTree/Mutator.cc'; then $(CYGPATH_W) 'SynTree/Mutator.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Mutator.cc'; fi`
     2417@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Mutator.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Tpo -c -o SynTree/driver_cfa_cpp-Mutator.obj `if test -f 'SynTree/Mutator.cc'; then $(CYGPATH_W) 'SynTree/Mutator.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Mutator.cc'; fi`
     2418@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Po
     2419@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Mutator.cc' object='SynTree/driver_cfa_cpp-Mutator.obj' libtool=no @AMDEPBACKSLASH@
     2420@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2421@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Mutator.obj `if test -f 'SynTree/Mutator.cc'; then $(CYGPATH_W) 'SynTree/Mutator.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Mutator.cc'; fi`
     2422
     2423SynTree/driver_cfa_cpp-AddStmtVisitor.o: SynTree/AddStmtVisitor.cc
     2424@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AddStmtVisitor.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Tpo -c -o SynTree/driver_cfa_cpp-AddStmtVisitor.o `test -f 'SynTree/AddStmtVisitor.cc' || echo '$(srcdir)/'`SynTree/AddStmtVisitor.cc
     2425@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Po
     2426@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AddStmtVisitor.cc' object='SynTree/driver_cfa_cpp-AddStmtVisitor.o' libtool=no @AMDEPBACKSLASH@
     2427@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2428@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AddStmtVisitor.o `test -f 'SynTree/AddStmtVisitor.cc' || echo '$(srcdir)/'`SynTree/AddStmtVisitor.cc
     2429
     2430SynTree/driver_cfa_cpp-AddStmtVisitor.obj: SynTree/AddStmtVisitor.cc
     2431@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-AddStmtVisitor.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Tpo -c -o SynTree/driver_cfa_cpp-AddStmtVisitor.obj `if test -f 'SynTree/AddStmtVisitor.cc'; then $(CYGPATH_W) 'SynTree/AddStmtVisitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddStmtVisitor.cc'; fi`
     2432@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Po
     2433@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AddStmtVisitor.cc' object='SynTree/driver_cfa_cpp-AddStmtVisitor.obj' libtool=no @AMDEPBACKSLASH@
     2434@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2435@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AddStmtVisitor.obj `if test -f 'SynTree/AddStmtVisitor.cc'; then $(CYGPATH_W) 'SynTree/AddStmtVisitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddStmtVisitor.cc'; fi`
    23052436
    23062437SynTree/driver_cfa_cpp-TypeSubstitution.o: SynTree/TypeSubstitution.cc
    2307 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeSubstitution.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo -c -o SynTree/driver_cfa_cpp-TypeSubstitution.o `test -f 'SynTree/TypeSubstitution.cc' || echo '$(srcdir)/'`SynTree/TypeSubstitution.cc
    2308 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po
    2309 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeSubstitution.cc' object='SynTree/driver_cfa_cpp-TypeSubstitution.o' libtool=no @AMDEPBACKSLASH@
    2310 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2311 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeSubstitution.o `test -f 'SynTree/TypeSubstitution.cc' || echo '$(srcdir)/'`SynTree/TypeSubstitution.cc
     2438@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeSubstitution.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo -c -o SynTree/driver_cfa_cpp-TypeSubstitution.o `test -f 'SynTree/TypeSubstitution.cc' || echo '$(srcdir)/'`SynTree/TypeSubstitution.cc
     2439@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po
     2440@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeSubstitution.cc' object='SynTree/driver_cfa_cpp-TypeSubstitution.o' libtool=no @AMDEPBACKSLASH@
     2441@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2442@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeSubstitution.o `test -f 'SynTree/TypeSubstitution.cc' || echo '$(srcdir)/'`SynTree/TypeSubstitution.cc
    23122443
    23132444SynTree/driver_cfa_cpp-TypeSubstitution.obj: SynTree/TypeSubstitution.cc
    2314 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeSubstitution.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo -c -o SynTree/driver_cfa_cpp-TypeSubstitution.obj `if test -f 'SynTree/TypeSubstitution.cc'; then $(CYGPATH_W) 'SynTree/TypeSubstitution.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeSubstitution.cc'; fi`
    2315 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po
    2316 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeSubstitution.cc' object='SynTree/driver_cfa_cpp-TypeSubstitution.obj' libtool=no @AMDEPBACKSLASH@
    2317 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2318 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeSubstitution.obj `if test -f 'SynTree/TypeSubstitution.cc'; then $(CYGPATH_W) 'SynTree/TypeSubstitution.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeSubstitution.cc'; fi`
     2445@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-TypeSubstitution.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo -c -o SynTree/driver_cfa_cpp-TypeSubstitution.obj `if test -f 'SynTree/TypeSubstitution.cc'; then $(CYGPATH_W) 'SynTree/TypeSubstitution.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeSubstitution.cc'; fi`
     2446@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po
     2447@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeSubstitution.cc' object='SynTree/driver_cfa_cpp-TypeSubstitution.obj' libtool=no @AMDEPBACKSLASH@
     2448@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2449@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-TypeSubstitution.obj `if test -f 'SynTree/TypeSubstitution.cc'; then $(CYGPATH_W) 'SynTree/TypeSubstitution.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeSubstitution.cc'; fi`
     2450
     2451SynTree/driver_cfa_cpp-Attribute.o: SynTree/Attribute.cc
     2452@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Attribute.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Tpo -c -o SynTree/driver_cfa_cpp-Attribute.o `test -f 'SynTree/Attribute.cc' || echo '$(srcdir)/'`SynTree/Attribute.cc
     2453@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Po
     2454@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Attribute.cc' object='SynTree/driver_cfa_cpp-Attribute.o' libtool=no @AMDEPBACKSLASH@
     2455@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2456@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Attribute.o `test -f 'SynTree/Attribute.cc' || echo '$(srcdir)/'`SynTree/Attribute.cc
     2457
     2458SynTree/driver_cfa_cpp-Attribute.obj: SynTree/Attribute.cc
     2459@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Attribute.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Tpo -c -o SynTree/driver_cfa_cpp-Attribute.obj `if test -f 'SynTree/Attribute.cc'; then $(CYGPATH_W) 'SynTree/Attribute.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Attribute.cc'; fi`
     2460@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Po
     2461@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Attribute.cc' object='SynTree/driver_cfa_cpp-Attribute.obj' libtool=no @AMDEPBACKSLASH@
     2462@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2463@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Attribute.obj `if test -f 'SynTree/Attribute.cc'; then $(CYGPATH_W) 'SynTree/Attribute.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Attribute.cc'; fi`
    23192464
    23202465Tuples/driver_cfa_cpp-Mutate.o: Tuples/Mutate.cc
    2321 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-Mutate.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo -c -o Tuples/driver_cfa_cpp-Mutate.o `test -f 'Tuples/Mutate.cc' || echo '$(srcdir)/'`Tuples/Mutate.cc
    2322 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
    2323 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/Mutate.cc' object='Tuples/driver_cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
    2324 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2325 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-Mutate.o `test -f 'Tuples/Mutate.cc' || echo '$(srcdir)/'`Tuples/Mutate.cc
     2466@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-Mutate.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo -c -o Tuples/driver_cfa_cpp-Mutate.o `test -f 'Tuples/Mutate.cc' || echo '$(srcdir)/'`Tuples/Mutate.cc
     2467@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
     2468@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/Mutate.cc' object='Tuples/driver_cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
     2469@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2470@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-Mutate.o `test -f 'Tuples/Mutate.cc' || echo '$(srcdir)/'`Tuples/Mutate.cc
    23262471
    23272472Tuples/driver_cfa_cpp-Mutate.obj: Tuples/Mutate.cc
    2328 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-Mutate.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo -c -o Tuples/driver_cfa_cpp-Mutate.obj `if test -f 'Tuples/Mutate.cc'; then $(CYGPATH_W) 'Tuples/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Mutate.cc'; fi`
    2329 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
    2330 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/Mutate.cc' object='Tuples/driver_cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
    2331 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2332 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-Mutate.obj `if test -f 'Tuples/Mutate.cc'; then $(CYGPATH_W) 'Tuples/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Mutate.cc'; fi`
     2473@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-Mutate.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo -c -o Tuples/driver_cfa_cpp-Mutate.obj `if test -f 'Tuples/Mutate.cc'; then $(CYGPATH_W) 'Tuples/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Mutate.cc'; fi`
     2474@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
     2475@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/Mutate.cc' object='Tuples/driver_cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
     2476@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2477@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-Mutate.obj `if test -f 'Tuples/Mutate.cc'; then $(CYGPATH_W) 'Tuples/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Mutate.cc'; fi`
    23332478
    23342479Tuples/driver_cfa_cpp-AssignExpand.o: Tuples/AssignExpand.cc
    2335 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-AssignExpand.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Tpo -c -o Tuples/driver_cfa_cpp-AssignExpand.o `test -f 'Tuples/AssignExpand.cc' || echo '$(srcdir)/'`Tuples/AssignExpand.cc
    2336 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Po
    2337 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/AssignExpand.cc' object='Tuples/driver_cfa_cpp-AssignExpand.o' libtool=no @AMDEPBACKSLASH@
    2338 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2339 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-AssignExpand.o `test -f 'Tuples/AssignExpand.cc' || echo '$(srcdir)/'`Tuples/AssignExpand.cc
     2480@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-AssignExpand.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Tpo -c -o Tuples/driver_cfa_cpp-AssignExpand.o `test -f 'Tuples/AssignExpand.cc' || echo '$(srcdir)/'`Tuples/AssignExpand.cc
     2481@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Po
     2482@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/AssignExpand.cc' object='Tuples/driver_cfa_cpp-AssignExpand.o' libtool=no @AMDEPBACKSLASH@
     2483@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2484@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-AssignExpand.o `test -f 'Tuples/AssignExpand.cc' || echo '$(srcdir)/'`Tuples/AssignExpand.cc
    23402485
    23412486Tuples/driver_cfa_cpp-AssignExpand.obj: Tuples/AssignExpand.cc
    2342 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-AssignExpand.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Tpo -c -o Tuples/driver_cfa_cpp-AssignExpand.obj `if test -f 'Tuples/AssignExpand.cc'; then $(CYGPATH_W) 'Tuples/AssignExpand.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/AssignExpand.cc'; fi`
    2343 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Po
    2344 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/AssignExpand.cc' object='Tuples/driver_cfa_cpp-AssignExpand.obj' libtool=no @AMDEPBACKSLASH@
    2345 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2346 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-AssignExpand.obj `if test -f 'Tuples/AssignExpand.cc'; then $(CYGPATH_W) 'Tuples/AssignExpand.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/AssignExpand.cc'; fi`
     2487@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-AssignExpand.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Tpo -c -o Tuples/driver_cfa_cpp-AssignExpand.obj `if test -f 'Tuples/AssignExpand.cc'; then $(CYGPATH_W) 'Tuples/AssignExpand.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/AssignExpand.cc'; fi`
     2488@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Po
     2489@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/AssignExpand.cc' object='Tuples/driver_cfa_cpp-AssignExpand.obj' libtool=no @AMDEPBACKSLASH@
     2490@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2491@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-AssignExpand.obj `if test -f 'Tuples/AssignExpand.cc'; then $(CYGPATH_W) 'Tuples/AssignExpand.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/AssignExpand.cc'; fi`
    23472492
    23482493Tuples/driver_cfa_cpp-FunctionFixer.o: Tuples/FunctionFixer.cc
    2349 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-FunctionFixer.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Tpo -c -o Tuples/driver_cfa_cpp-FunctionFixer.o `test -f 'Tuples/FunctionFixer.cc' || echo '$(srcdir)/'`Tuples/FunctionFixer.cc
    2350 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Po
    2351 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/FunctionFixer.cc' object='Tuples/driver_cfa_cpp-FunctionFixer.o' libtool=no @AMDEPBACKSLASH@
    2352 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2353 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-FunctionFixer.o `test -f 'Tuples/FunctionFixer.cc' || echo '$(srcdir)/'`Tuples/FunctionFixer.cc
     2494@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-FunctionFixer.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Tpo -c -o Tuples/driver_cfa_cpp-FunctionFixer.o `test -f 'Tuples/FunctionFixer.cc' || echo '$(srcdir)/'`Tuples/FunctionFixer.cc
     2495@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Po
     2496@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/FunctionFixer.cc' object='Tuples/driver_cfa_cpp-FunctionFixer.o' libtool=no @AMDEPBACKSLASH@
     2497@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2498@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-FunctionFixer.o `test -f 'Tuples/FunctionFixer.cc' || echo '$(srcdir)/'`Tuples/FunctionFixer.cc
    23542499
    23552500Tuples/driver_cfa_cpp-FunctionFixer.obj: Tuples/FunctionFixer.cc
    2356 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-FunctionFixer.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Tpo -c -o Tuples/driver_cfa_cpp-FunctionFixer.obj `if test -f 'Tuples/FunctionFixer.cc'; then $(CYGPATH_W) 'Tuples/FunctionFixer.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionFixer.cc'; fi`
    2357 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Po
    2358 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/FunctionFixer.cc' object='Tuples/driver_cfa_cpp-FunctionFixer.obj' libtool=no @AMDEPBACKSLASH@
    2359 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2360 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-FunctionFixer.obj `if test -f 'Tuples/FunctionFixer.cc'; then $(CYGPATH_W) 'Tuples/FunctionFixer.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionFixer.cc'; fi`
     2501@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-FunctionFixer.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Tpo -c -o Tuples/driver_cfa_cpp-FunctionFixer.obj `if test -f 'Tuples/FunctionFixer.cc'; then $(CYGPATH_W) 'Tuples/FunctionFixer.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionFixer.cc'; fi`
     2502@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Po
     2503@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/FunctionFixer.cc' object='Tuples/driver_cfa_cpp-FunctionFixer.obj' libtool=no @AMDEPBACKSLASH@
     2504@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2505@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-FunctionFixer.obj `if test -f 'Tuples/FunctionFixer.cc'; then $(CYGPATH_W) 'Tuples/FunctionFixer.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionFixer.cc'; fi`
    23612506
    23622507Tuples/driver_cfa_cpp-TupleAssignment.o: Tuples/TupleAssignment.cc
    2363 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-TupleAssignment.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo -c -o Tuples/driver_cfa_cpp-TupleAssignment.o `test -f 'Tuples/TupleAssignment.cc' || echo '$(srcdir)/'`Tuples/TupleAssignment.cc
    2364 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po
    2365 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/TupleAssignment.cc' object='Tuples/driver_cfa_cpp-TupleAssignment.o' libtool=no @AMDEPBACKSLASH@
    2366 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2367 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-TupleAssignment.o `test -f 'Tuples/TupleAssignment.cc' || echo '$(srcdir)/'`Tuples/TupleAssignment.cc
     2508@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-TupleAssignment.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo -c -o Tuples/driver_cfa_cpp-TupleAssignment.o `test -f 'Tuples/TupleAssignment.cc' || echo '$(srcdir)/'`Tuples/TupleAssignment.cc
     2509@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po
     2510@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/TupleAssignment.cc' object='Tuples/driver_cfa_cpp-TupleAssignment.o' libtool=no @AMDEPBACKSLASH@
     2511@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2512@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-TupleAssignment.o `test -f 'Tuples/TupleAssignment.cc' || echo '$(srcdir)/'`Tuples/TupleAssignment.cc
    23682513
    23692514Tuples/driver_cfa_cpp-TupleAssignment.obj: Tuples/TupleAssignment.cc
    2370 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-TupleAssignment.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo -c -o Tuples/driver_cfa_cpp-TupleAssignment.obj `if test -f 'Tuples/TupleAssignment.cc'; then $(CYGPATH_W) 'Tuples/TupleAssignment.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleAssignment.cc'; fi`
    2371 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po
    2372 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/TupleAssignment.cc' object='Tuples/driver_cfa_cpp-TupleAssignment.obj' libtool=no @AMDEPBACKSLASH@
    2373 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2374 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-TupleAssignment.obj `if test -f 'Tuples/TupleAssignment.cc'; then $(CYGPATH_W) 'Tuples/TupleAssignment.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleAssignment.cc'; fi`
     2515@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-TupleAssignment.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo -c -o Tuples/driver_cfa_cpp-TupleAssignment.obj `if test -f 'Tuples/TupleAssignment.cc'; then $(CYGPATH_W) 'Tuples/TupleAssignment.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleAssignment.cc'; fi`
     2516@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po
     2517@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/TupleAssignment.cc' object='Tuples/driver_cfa_cpp-TupleAssignment.obj' libtool=no @AMDEPBACKSLASH@
     2518@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2519@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-TupleAssignment.obj `if test -f 'Tuples/TupleAssignment.cc'; then $(CYGPATH_W) 'Tuples/TupleAssignment.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleAssignment.cc'; fi`
    23752520
    23762521Tuples/driver_cfa_cpp-FunctionChecker.o: Tuples/FunctionChecker.cc
    2377 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-FunctionChecker.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Tpo -c -o Tuples/driver_cfa_cpp-FunctionChecker.o `test -f 'Tuples/FunctionChecker.cc' || echo '$(srcdir)/'`Tuples/FunctionChecker.cc
    2378 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Po
    2379 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/FunctionChecker.cc' object='Tuples/driver_cfa_cpp-FunctionChecker.o' libtool=no @AMDEPBACKSLASH@
    2380 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2381 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-FunctionChecker.o `test -f 'Tuples/FunctionChecker.cc' || echo '$(srcdir)/'`Tuples/FunctionChecker.cc
     2522@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-FunctionChecker.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Tpo -c -o Tuples/driver_cfa_cpp-FunctionChecker.o `test -f 'Tuples/FunctionChecker.cc' || echo '$(srcdir)/'`Tuples/FunctionChecker.cc
     2523@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Po
     2524@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/FunctionChecker.cc' object='Tuples/driver_cfa_cpp-FunctionChecker.o' libtool=no @AMDEPBACKSLASH@
     2525@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2526@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-FunctionChecker.o `test -f 'Tuples/FunctionChecker.cc' || echo '$(srcdir)/'`Tuples/FunctionChecker.cc
    23822527
    23832528Tuples/driver_cfa_cpp-FunctionChecker.obj: Tuples/FunctionChecker.cc
    2384 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-FunctionChecker.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Tpo -c -o Tuples/driver_cfa_cpp-FunctionChecker.obj `if test -f 'Tuples/FunctionChecker.cc'; then $(CYGPATH_W) 'Tuples/FunctionChecker.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionChecker.cc'; fi`
    2385 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Po
    2386 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/FunctionChecker.cc' object='Tuples/driver_cfa_cpp-FunctionChecker.obj' libtool=no @AMDEPBACKSLASH@
    2387 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2388 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-FunctionChecker.obj `if test -f 'Tuples/FunctionChecker.cc'; then $(CYGPATH_W) 'Tuples/FunctionChecker.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionChecker.cc'; fi`
     2529@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-FunctionChecker.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Tpo -c -o Tuples/driver_cfa_cpp-FunctionChecker.obj `if test -f 'Tuples/FunctionChecker.cc'; then $(CYGPATH_W) 'Tuples/FunctionChecker.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionChecker.cc'; fi`
     2530@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Po
     2531@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/FunctionChecker.cc' object='Tuples/driver_cfa_cpp-FunctionChecker.obj' libtool=no @AMDEPBACKSLASH@
     2532@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2533@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-FunctionChecker.obj `if test -f 'Tuples/FunctionChecker.cc'; then $(CYGPATH_W) 'Tuples/FunctionChecker.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionChecker.cc'; fi`
    23892534
    23902535Tuples/driver_cfa_cpp-NameMatcher.o: Tuples/NameMatcher.cc
    2391 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-NameMatcher.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Tpo -c -o Tuples/driver_cfa_cpp-NameMatcher.o `test -f 'Tuples/NameMatcher.cc' || echo '$(srcdir)/'`Tuples/NameMatcher.cc
    2392 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Po
    2393 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/NameMatcher.cc' object='Tuples/driver_cfa_cpp-NameMatcher.o' libtool=no @AMDEPBACKSLASH@
    2394 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2395 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-NameMatcher.o `test -f 'Tuples/NameMatcher.cc' || echo '$(srcdir)/'`Tuples/NameMatcher.cc
     2536@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-NameMatcher.o -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Tpo -c -o Tuples/driver_cfa_cpp-NameMatcher.o `test -f 'Tuples/NameMatcher.cc' || echo '$(srcdir)/'`Tuples/NameMatcher.cc
     2537@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Po
     2538@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/NameMatcher.cc' object='Tuples/driver_cfa_cpp-NameMatcher.o' libtool=no @AMDEPBACKSLASH@
     2539@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2540@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-NameMatcher.o `test -f 'Tuples/NameMatcher.cc' || echo '$(srcdir)/'`Tuples/NameMatcher.cc
    23962541
    23972542Tuples/driver_cfa_cpp-NameMatcher.obj: Tuples/NameMatcher.cc
    2398 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-NameMatcher.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Tpo -c -o Tuples/driver_cfa_cpp-NameMatcher.obj `if test -f 'Tuples/NameMatcher.cc'; then $(CYGPATH_W) 'Tuples/NameMatcher.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/NameMatcher.cc'; fi`
    2399 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Po
    2400 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/NameMatcher.cc' object='Tuples/driver_cfa_cpp-NameMatcher.obj' libtool=no @AMDEPBACKSLASH@
    2401 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2402 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-NameMatcher.obj `if test -f 'Tuples/NameMatcher.cc'; then $(CYGPATH_W) 'Tuples/NameMatcher.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/NameMatcher.cc'; fi`
     2543@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/driver_cfa_cpp-NameMatcher.obj -MD -MP -MF Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Tpo -c -o Tuples/driver_cfa_cpp-NameMatcher.obj `if test -f 'Tuples/NameMatcher.cc'; then $(CYGPATH_W) 'Tuples/NameMatcher.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/NameMatcher.cc'; fi`
     2544@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Po
     2545@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/NameMatcher.cc' object='Tuples/driver_cfa_cpp-NameMatcher.obj' libtool=no @AMDEPBACKSLASH@
     2546@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2547@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-NameMatcher.obj `if test -f 'Tuples/NameMatcher.cc'; then $(CYGPATH_W) 'Tuples/NameMatcher.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/NameMatcher.cc'; fi`
    24032548
    24042549.ll.cc:
    2405         $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
     2550        $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
    24062551
    24072552.yy.cc:
    2408         $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
     2553        $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
    24092554
    24102555ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  • src/Parser/DeclarationNode.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // DeclarationNode.cc -- 
     7// DeclarationNode.cc --
    88//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 12:34:05 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:53:17 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Apr 14 15:38:09 2016
    1313// Update Count     : 161
    1414//
     
    9797                os << endl << string( indent + 2, ' ' ) << "with initializer ";
    9898                initializer->printOneLine( os );
     99                os << " maybe constructed? " << initializer->get_maybeConstructed();
     100
    99101        } // if
    100102
     
    353355        } // if
    354356}
    355          
     357
    356358DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
    357359        if ( q ) {
     
    504506                assert( false );
    505507        } // switch
    506        
     508
    507509        return this;
    508510}
     
    615617                assert( a->type->kind == TypeData::Array );
    616618                TypeData *lastArray = findLast( a->type );
    617                 if ( type ) { 
     619                if ( type ) {
    618620                        switch ( type->kind ) {
    619621                          case TypeData::Aggregate:
     
    659661        } // if
    660662}
    661        
     663
    662664DeclarationNode *DeclarationNode::addIdList( DeclarationNode *ids ) {
    663665        type = addIdListToType( type, ids );
     
    864866Type *DeclarationNode::buildType() const {
    865867        assert( type );
    866  
     868
    867869        switch ( type->kind ) {
    868870          case TypeData::Enum:
  • src/Parser/ExpressionNode.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // ExpressionNode.cc -- 
    8 // 
     7// ExpressionNode.cc --
     8//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Apr  8 15:43:05 2016
    13 // Update Count     : 296
    14 // 
     12// Last Modified On : Mon Jun 13 14:46:17 2016
     13// Update Count     : 307
     14//
    1515
    1616#include <cassert>
     
    3232using namespace std;
    3333
    34 ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
    35 
    36 ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ), argName( 0 ) {}
    37 
    38 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
     34ExpressionNode::ExpressionNode() : ParseNode() {}
     35
     36ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ) {}
     37
     38ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {
    3939        if ( other.argName ) {
    4040                argName = other.argName->clone();
     
    231231        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    232232        value.insert( value.length() - 1, newValue->substr( 1, newValue->length() - 2 ) );
    233        
     233
    234234        delete newValue;                                                                        // allocated by lexer
    235235        return this;
     
    344344
    345345Expression *DesignatorNode::build() const {
    346         Expression * ret = get_argName()->build();
     346        Expression * ret = maybeBuild<Expression>(get_argName());
    347347
    348348        if ( isArrayIndex ) {
    349                 // need to traverse entire structure and change any instances of 0 or 1 to 
     349                // need to traverse entire structure and change any instances of 0 or 1 to
    350350                // ConstantExpr
    351351                DesignatorFixer fixer;
     
    389389        "Cond", "NCond",
    390390        // diadic
    391         "SizeOf", "AlignOf", "OffsetOf", "Attr", "CompLit", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&",
     391        "SizeOf", "AlignOf", "OffsetOf", "Attr", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&",
    392392        "?|?", "?&?", "?^?", "Cast", "?<<?", "?>>?", "?<?", "?>?", "?<=?", "?>=?", "?==?", "?!=?",
    393393        "?=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",
     
    440440}
    441441
    442 CompositeExprNode::CompositeExprNode( const CompositeExprNode &other ) : ExpressionNode( other ), function( maybeClone( other.function ) ) {
     442CompositeExprNode::CompositeExprNode( const CompositeExprNode &other ) : ExpressionNode( other ), function( maybeClone( other.function ) ), arguments( 0 ) {
    443443        ParseNode *cur = other.arguments;
    444444        while ( cur ) {
     
    466466
    467467        if ( ! ( op = dynamic_cast<OperatorNode *>( function ) ) ) { // function as opposed to operator
    468                 return new UntypedExpr( function->build(), args, maybeBuild< Expression >( get_argName() ));
     468                return new UntypedExpr( maybeBuild<Expression>(function), args, maybeBuild< Expression >( get_argName() ));
    469469        } // if
    470470
     
    550550                        if ( dynamic_cast< VoidType* >( targetType ) ) {
    551551                                delete targetType;
    552                                 return new CastExpr( expr_node->build(), maybeBuild< Expression >( get_argName() ) );
     552                                return new CastExpr( maybeBuild<Expression>(expr_node), maybeBuild< Expression >( get_argName() ) );
    553553                        } else {
    554                                 return new CastExpr( expr_node->build(),targetType, maybeBuild< Expression >( get_argName() ) );
     554                                return new CastExpr( maybeBuild<Expression>(expr_node),targetType, maybeBuild< Expression >( get_argName() ) );
    555555                        } // if
    556556                }
     
    608608                {
    609609                        assert( args.size() == 2 );
    610                        
     610
    611611                        if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args() ) ) {
    612612                                NameExpr *member = dynamic_cast<NameExpr *>( args.back() );
     
    621621                        assert( var );
    622622                        if ( ! get_args()->get_link() ) {
    623                                 return new AttrExpr( var->build(), ( Expression*)0);
     623                                return new AttrExpr( maybeBuild<Expression>(var), ( Expression*)0);
    624624                        } else if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args()->get_link()) ) {
    625                                 return new AttrExpr( var->build(), arg->get_decl()->buildType());
     625                                return new AttrExpr( maybeBuild<Expression>(var), arg->get_decl()->buildType());
    626626                        } else {
    627                                 return new AttrExpr( var->build(), args.back());
    628                         } // if
    629                 }
    630           case OperatorNode::CompLit:
    631                 throw UnimplementedError( "C99 compound literals" );
    632                 // the short-circuited operators
     627                                return new AttrExpr( maybeBuild<Expression>(var), args.back());
     628                        } // if
     629                }
    633630          case OperatorNode::Or:
    634631          case OperatorNode::And:
     
    719716
    720717Expression *AsmExprNode::build() const {
    721         return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)constraint->build(), operand->build() );
     718        return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)maybeBuild<Expression>(constraint), maybeBuild<Expression>(operand) );
    722719}
    723720
     
    796793
    797794Expression *ValofExprNode::build() const {
    798         return new UntypedValofExpr ( get_body()->build(), maybeBuild< Expression >( get_argName() ) );
     795        return new UntypedValofExpr ( maybeBuild<Statement>(get_body()), maybeBuild< Expression >( get_argName() ) );
    799796}
    800797
     
    908905
    909906Expression *CompoundLiteralNode::build() const {
    910         Declaration * newDecl = type->build();                          // compound literal type
     907        Declaration * newDecl = maybeBuild<Declaration>(type); // compound literal type
    911908        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
    912                 return new CompoundLiteralExpr( newDeclWithType->get_type(), kids->build() );
     909                return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
    913910        // these types do not have associated type information
    914911        } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
    915                 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), kids->build() );
     912                return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );
    916913        } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
    917                 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), kids->build() );
     914                return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );
    918915        } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
    919                 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), kids->build() );
     916                return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );
    920917        } else {
    921918                assert( false );
  • src/Parser/InitializerNode.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // InitializerNode.cc -- 
    8 // 
     7// InitializerNode.cc --
     8//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:20:24 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Oct  8 17:18:55 2015
    13 // Update Count     : 4
    14 // 
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Jan 07 13:32:57 2016
     13// Update Count     : 13
     14//
    1515
    1616#include <cassert>
     
    2323
    2424InitializerNode::InitializerNode( ExpressionNode *_expr, bool aggrp, ExpressionNode *des )
    25         : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ) {
     25        : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    2626        if ( aggrp )
    2727                kids = dynamic_cast< InitializerNode *>( get_link() );
     
    3232
    3333InitializerNode::InitializerNode( InitializerNode *init, bool aggrp, ExpressionNode *des )
    34         : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ) {
     34        : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    3535        if ( init != 0 )
    3636                set_link(init);
     
    9191                } // if
    9292
    93                 return new ListInit( initlist, designlist );
     93                return new ListInit( initlist, designlist, maybeConstructed );
    9494        } else {
    9595                std::list< Expression *> designators;
     
    9999
    100100                if ( get_expression() != 0)
    101                         return new SingleInit( get_expression()->build(), designators );
     101                        return new SingleInit( get_expression()->build(), designators, maybeConstructed );
    102102        } // if
    103103
  • src/Parser/ParseNode.h

    r1b5c81ed rf80e0218  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:28:16 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon Apr 11 11:50:52 2016
    13 // Update Count     : 205
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jun 27 23:28:10 2016
     13// Update Count     : 242
    1414//
    1515
     
    2020#include <list>
    2121#include <iterator>
     22#include <memory>
    2223
    2324#include "Common/utility.h"
    2425#include "Parser/LinkageSpec.h"
    2526#include "SynTree/Type.h"
     27#include "SynTree/Expression.h"
    2628//#include "SynTree/Declaration.h"
    2729#include "Common/UniqueName.h"
     30#include "SynTree/Label.h"
    2831
    2932class ExpressionNode;
     
    7982        ExpressionNode *set_argName( const std::string *aName );
    8083        ExpressionNode *set_argName( ExpressionNode *aDesignator );
     84        bool get_extension() const { return extension; }
     85        ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
    8186
    8287        virtual void print( std::ostream &, int indent = 0) const = 0;
     
    8792        void printDesignation ( std::ostream &, int indent = 0) const;
    8893  private:
    89         ExpressionNode *argName;
     94        ExpressionNode *argName = 0;
     95        bool extension = false;
     96};
     97
     98template< typename T >
     99struct maybeBuild_t<Expression, T> {
     100        static inline Expression * doit( const T *orig ) {
     101                if ( orig ) {
     102                        Expression *p = orig->build();
     103                        p->set_extension( orig->get_extension() );
     104                        return p;
     105                } else {
     106                        return 0;
     107                } // if
     108        }
    90109};
    91110
     
    179198                                Cond, NCond,
    180199                                // diadic
    181                                 SizeOf, AlignOf, OffsetOf, Attr, CompLit, Plus, Minus, Mul, Div, Mod, Or, And,
     200                                SizeOf, AlignOf, OffsetOf, Attr, Plus, Minus, Mul, Div, Mod, Or, And,
    182201                                BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq,
    183202                                Assign, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,
     
    185204                                // monadic
    186205                                UnPlus, UnMinus, AddressOf, PointTo, Neg, BitNeg, Incr, IncrPost, Decr, DecrPost, LabelAddress,
     206                                Ctor, Dtor,
    187207        };
    188208
     
    265285        virtual void printOneLine( std::ostream &, int indent = 0) const;
    266286
    267         const std::list< std::string > &get_labels() const { return labels; };
     287        const std::list< Label > &get_labels() const { return labels; };
    268288        void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
    269289  private:
    270         std::list< std::string > labels;
     290        std::list< Label > labels;
    271291};
    272292
     
    406426        ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }
    407427
     428        bool get_extension() const { return extension; }
     429        DeclarationNode *set_extension( bool exten ) { extension = exten; return this; }
     430
    408431        DeclarationNode();
    409432        ~DeclarationNode();
     
    421444        bool hasEllipsis;
    422445        LinkageSpec::Type linkage;
     446        bool extension = false;
    423447
    424448        static UniqueName anonymous;
     
    457481        void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; }
    458482        void setCatchRest( bool newVal ) { isCatchRest = newVal; }
     483
     484        bool get_extension() const { return extension; }
     485        StatementNode *set_extension( bool exten ) { extension = exten; return this; }
    459486
    460487        std::string get_target() const;
     
    476503        DeclarationNode *decl;
    477504        bool isCatchRest;
     505        bool extension = false;
    478506}; // StatementNode
    479507
     
    505533        ExpressionNode *output, *input;
    506534        ConstantNode *clobber;
    507         std::list<std::string> gotolabels;
     535        std::list< Label > gotolabels;
    508536};
    509537
     
    524552        InitializerNode *set_designators( ExpressionNode *des ) { designator = des; return this; }
    525553        ExpressionNode *get_designators() const { return designator; }
     554
     555        InitializerNode *set_maybeConstructed( bool value ) { maybeConstructed = value; return this; }
     556        bool get_maybeConstructed() const { return maybeConstructed; }
    526557
    527558        InitializerNode *next_init() const { return kids; }
     
    536567        ExpressionNode *designator; // may be list
    537568        InitializerNode *kids;
     569        bool maybeConstructed;
    538570};
    539571
     
    569601        while ( cur ) {
    570602                try {
    571                         SynTreeType *result = dynamic_cast< SynTreeType *>( cur->build() );
     603//                      SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::result_of<decltype(&NodeType::build)(NodeType)>::type>( cur ) );
     604                        SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::pointer_traits<decltype(cur->build())>::element_type>( cur ) );
    572605                        if ( result ) {
    573606                                *out++ = result;
  • src/Parser/StatementNode.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // StatementNode.cc -- 
     7// StatementNode.cc --
    88//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 30 14:39:39 2015
    13 // Update Count     : 130
     12// Last Modified On : Thu Jun  9 14:18:46 2016
     13// Update Count     : 132
    1414//
    1515
     
    2727
    2828const char *StatementNode::StType[] = {
    29         "Exp",   "If",       "Switch", "Case",    "Default",  "Choose",   "Fallthru", 
    30         "While", "Do",       "For", 
     29        "Exp",   "If",       "Switch", "Case",    "Default",  "Choose",   "Fallthru",
     30        "While", "Do",       "For",
    3131        "Goto",  "Continue", "Break",  "Return",  "Throw",
    3232        "Try",   "Catch",    "Finally", "Asm",
     
    6262StatementNode::StatementNode( Type t, ExpressionNode *ctrl_label, StatementNode *block ) : type( t ), control( ctrl_label ), block( block ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {
    6363        this->control = ( t == Default ) ? 0 : control;
    64 } 
     64}
    6565
    6666StatementNode::StatementNode( Type t, string *target ) : type( t ), control( 0 ), block( 0 ), labels( 0 ), target( target ), decl( 0 ), isCatchRest ( false ) {}
     
    7474
    7575StatementNode * StatementNode::newCatchStmt( DeclarationNode *d, StatementNode *s, bool catchRestP ) {
    76         StatementNode *ret = new StatementNode( StatementNode::Catch, 0, s ); 
     76        StatementNode *ret = new StatementNode( StatementNode::Catch, 0, s );
    7777        ret->addDeclaration( d );
    7878        ret->setCatchRest( catchRestP );
     
    101101StatementNode *StatementNode::add_label( const std::string *l ) {
    102102        if ( l != 0 ) {
    103                 labels.push_front( *l ); 
     103                labels.push_front( *l );
    104104                delete l;
    105105        } // if
     
    156156                        control->print( os, indent );
    157157                        os << endl;
    158                 } else 
     158                } else
    159159                        os << string( indent, ' ' ) << "Null Statement" << endl;
    160160                break;
     
    177177                if ( block ) {
    178178                        os << string( indent + ParseNode::indent_by, ' ' ) << "Branches of execution: " << endl;
    179                         block->printList( os, indent + 2 * ParseNode::indent_by ); 
     179                        block->printList( os, indent + 2 * ParseNode::indent_by );
    180180                } // if
    181181                if ( target ) {
     
    222222                                branches.pop_front();
    223223                        } // if
    224                         return new IfStmt( labs, notZeroExpr( get_control()->build() ), thenb, elseb );
     224                        return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb );
    225225                }
    226226          case While:
    227227                assert( branches.size() == 1 );
    228                 return new WhileStmt( labs, notZeroExpr( get_control()->build() ), branches.front() );
     228                return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );
    229229          case Do:
    230230                assert( branches.size() == 1 );
    231                 return new WhileStmt( labs, notZeroExpr( get_control()->build() ), branches.front(), true );
     231                return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );
    232232          case For:
    233233                {
     
    244244                        Expression *cond = 0;
    245245                        if ( ctl->get_condition() != 0 )
    246                                 cond = notZeroExpr( ctl->get_condition()->build() );
     246                                cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );
    247247
    248248                        Expression *incr = 0;
    249249                        if ( ctl->get_change() != 0 )
    250                                 incr = ctl->get_change()->build();
     250                                incr = maybeBuild<Expression>(ctl->get_change());
    251251
    252252                        return new ForStmt( labs, init, cond, incr, branches.front() );
    253253                }
    254254          case Switch:
    255                 return new SwitchStmt( labs, get_control()->build(), branches );
     255                return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
    256256          case Choose:
    257                 return new ChooseStmt( labs, get_control()->build(), branches );
     257                return new ChooseStmt( labs, maybeBuild<Expression>(get_control()), branches );
    258258          case Fallthru:
    259259                return new FallthruStmt( labs );
    260           case Case: 
    261                 return new CaseStmt( labs, get_control()->build(), branches );
     260          case Case:
     261                return new CaseStmt( labs, maybeBuild<Expression>(get_control()), branches );
    262262          case Default:
    263263                return new CaseStmt( labs, 0, branches, true );
     
    266266                        if ( get_target() == "" ) {                                     // computed goto
    267267                                assert( get_control() != 0 );
    268                                 return new BranchStmt( labs, get_control()->build(), BranchStmt::Goto );
     268                                return new BranchStmt( labs, maybeBuild<Expression>(get_control()), BranchStmt::Goto );
    269269                        } // if
    270270
     
    394394                os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl;
    395395                os << string( indent + 2 * ParseNode::indent_by, ' ' );
    396                 for ( std::list<std::string>::const_iterator i = gotolabels.begin();; ) {
     396                for ( std::list<Label>::const_iterator i = gotolabels.begin();; ) {
    397397                        os << *i;
    398398                        i++;
     
    426426}
    427427
    428 Statement *NullStmtNode::build() const { 
     428Statement *NullStmtNode::build() const {
    429429        return new NullStmt;
    430430}
  • src/Parser/TypeData.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeData.cc -- 
     7// TypeData.cc --
    88//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 15:12:51 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:26:45 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Apr 06 16:57:53 2016
    1313// Update Count     : 49
    1414//
     
    449449        for ( std::list< TypeDecl* >::iterator i = outputList.begin(); i != outputList.end(); ++i ) {
    450450                if ( (*i)->get_kind() == TypeDecl::Any ) {
     451                        // add assertion parameters to `type' tyvars in reverse order
     452                        // add dtor:  void ^?{}(T *)
     453                        FunctionType *dtorType = new FunctionType( Type::Qualifiers(), false );
     454                        dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
     455                        (*i)->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, 0, false, false ) );
     456
     457                        // add copy ctor:  void ?{}(T *, T)
     458                        FunctionType *copyCtorType = new FunctionType( Type::Qualifiers(), false );
     459                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
     460                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
     461                        (*i)->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, copyCtorType, 0, false, false ) );
     462
     463                        // add default ctor:  void ?{}(T *)
     464                        FunctionType *ctorType = new FunctionType( Type::Qualifiers(), false );
     465                        ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
     466                        (*i)->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, 0, false, false ) );
     467
     468                        // add assignment operator:  T * ?=?(T *, T)
    451469                        FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    452470                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
     
    902920                if ( cur->get_enumeratorValue() != NULL ) {
    903921                        ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members);
    904                         member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ) ) );
     922                        member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) );
    905923                } // if
    906924        } // for
  • src/Parser/lex.cc

    r1b5c81ed rf80e0218  
    14671467 * Created On       : Sat Sep 22 08:58:10 2001
    14681468 * Last Modified By : Peter A. Buhr
    1469  * Last Modified On : Mon Mar 21 23:33:46 2016
    1470  * Update Count     : 450
     1469 * Last Modified On : Thu Jun 23 07:29:30 2016
     1470 * Update Count     : 457
    14711471 */
    14721472#line 20 "lex.ll"
     
    15021502
    15031503void rm_underscore() {
    1504         // remove underscores in numeric constant
    1505         int j = 0;
     1504        // Remove underscores in numeric constant by copying the non-underscore characters to the front of the string.
     1505        yyleng = 0;
    15061506        for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
    15071507                if ( yytext[i] != '_' ) {
    1508                         yytext[j] = yytext[i];
    1509                         j += 1;
     1508                        yytext[yyleng] = yytext[i];
     1509                        yyleng += 1;
    15101510                } // if
    15111511        } // for
    1512         yyleng = j;
    15131512        yytext[yyleng] = '\0';
    15141513}
     
    15231522// ' stop highlighting
    15241523// display/white-space characters
    1525 // operators
    1526 
    1527 
    1528 
    1529 
    1530 #line 1531 "Parser/lex.cc"
     1524// overloadable operators
     1525// op_binary_not_over "?"|"->"|"."|"&&"|"||"|"@="
     1526// operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
     1527
     1528
     1529
     1530
     1531#line 1532 "Parser/lex.cc"
    15311532
    15321533#define INITIAL 0
     
    17201721        register int yy_act;
    17211722   
    1722 #line 139 "lex.ll"
     1723#line 138 "lex.ll"
    17231724
    17241725                                   /* line directives */
    1725 #line 1726 "Parser/lex.cc"
     1726#line 1727 "Parser/lex.cc"
    17261727
    17271728        if ( !(yy_init) )
     
    18201821/* rule 1 can match eol */
    18211822YY_RULE_SETUP
    1822 #line 141 "lex.ll"
     1823#line 140 "lex.ll"
    18231824{
    18241825        /* " stop highlighting */
     
    18471848/* rule 2 can match eol */
    18481849YY_RULE_SETUP
    1849 #line 164 "lex.ll"
     1850#line 163 "lex.ll"
    18501851;
    18511852        YY_BREAK
     
    18531854case 3:
    18541855YY_RULE_SETUP
    1855 #line 167 "lex.ll"
     1856#line 166 "lex.ll"
    18561857{ BEGIN COMMENT; }
    18571858        YY_BREAK
     
    18591860/* rule 4 can match eol */
    18601861YY_RULE_SETUP
     1862#line 167 "lex.ll"
     1863;
     1864        YY_BREAK
     1865case 5:
     1866YY_RULE_SETUP
    18611867#line 168 "lex.ll"
    1862 ;
    1863         YY_BREAK
    1864 case 5:
    1865 YY_RULE_SETUP
    1866 #line 169 "lex.ll"
    18671868{ BEGIN 0; }
    18681869        YY_BREAK
     
    18711872/* rule 6 can match eol */
    18721873YY_RULE_SETUP
    1873 #line 172 "lex.ll"
     1874#line 171 "lex.ll"
    18741875;
    18751876        YY_BREAK
     
    18771878case 7:
    18781879YY_RULE_SETUP
     1880#line 174 "lex.ll"
     1881{ WHITE_RETURN(' '); }
     1882        YY_BREAK
     1883case 8:
     1884YY_RULE_SETUP
    18791885#line 175 "lex.ll"
    18801886{ WHITE_RETURN(' '); }
    18811887        YY_BREAK
    1882 case 8:
    1883 YY_RULE_SETUP
    1884 #line 176 "lex.ll"
    1885 { WHITE_RETURN(' '); }
    1886         YY_BREAK
    18871888case 9:
    18881889/* rule 9 can match eol */
    18891890YY_RULE_SETUP
    1890 #line 177 "lex.ll"
     1891#line 176 "lex.ll"
    18911892{ NEWLINE_RETURN(); }
    18921893        YY_BREAK
     
    18941895case 10:
    18951896YY_RULE_SETUP
     1897#line 179 "lex.ll"
     1898{ KEYWORD_RETURN(ALIGNAS); }                    // C11
     1899        YY_BREAK
     1900case 11:
     1901YY_RULE_SETUP
    18961902#line 180 "lex.ll"
    1897 { KEYWORD_RETURN(ALIGNAS); }                    // C11
    1898         YY_BREAK
    1899 case 11:
     1903{ KEYWORD_RETURN(ALIGNOF); }                    // C11
     1904        YY_BREAK
     1905case 12:
    19001906YY_RULE_SETUP
    19011907#line 181 "lex.ll"
    1902 { KEYWORD_RETURN(ALIGNOF); }                    // C11
    1903         YY_BREAK
    1904 case 12:
     1908{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
     1909        YY_BREAK
     1910case 13:
    19051911YY_RULE_SETUP
    19061912#line 182 "lex.ll"
    19071913{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    19081914        YY_BREAK
    1909 case 13:
     1915case 14:
    19101916YY_RULE_SETUP
    19111917#line 183 "lex.ll"
    1912 { KEYWORD_RETURN(ALIGNOF); }                    // GCC
    1913         YY_BREAK
    1914 case 14:
     1918{ KEYWORD_RETURN(ASM); }
     1919        YY_BREAK
     1920case 15:
    19151921YY_RULE_SETUP
    19161922#line 184 "lex.ll"
    1917 { KEYWORD_RETURN(ASM); }
    1918         YY_BREAK
    1919 case 15:
     1923{ KEYWORD_RETURN(ASM); }                                // GCC
     1924        YY_BREAK
     1925case 16:
    19201926YY_RULE_SETUP
    19211927#line 185 "lex.ll"
    19221928{ KEYWORD_RETURN(ASM); }                                // GCC
    19231929        YY_BREAK
    1924 case 16:
     1930case 17:
    19251931YY_RULE_SETUP
    19261932#line 186 "lex.ll"
    1927 { KEYWORD_RETURN(ASM); }                                // GCC
    1928         YY_BREAK
    1929 case 17:
     1933{ KEYWORD_RETURN(AT); }                                 // CFA
     1934        YY_BREAK
     1935case 18:
    19301936YY_RULE_SETUP
    19311937#line 187 "lex.ll"
    1932 { KEYWORD_RETURN(AT); }                                 // CFA
    1933         YY_BREAK
    1934 case 18:
     1938{ KEYWORD_RETURN(ATOMIC); }                             // C11
     1939        YY_BREAK
     1940case 19:
    19351941YY_RULE_SETUP
    19361942#line 188 "lex.ll"
    1937 { KEYWORD_RETURN(ATOMIC); }                             // C11
    1938         YY_BREAK
    1939 case 19:
     1943{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1944        YY_BREAK
     1945case 20:
    19401946YY_RULE_SETUP
    19411947#line 189 "lex.ll"
    19421948{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    19431949        YY_BREAK
    1944 case 20:
     1950case 21:
    19451951YY_RULE_SETUP
    19461952#line 190 "lex.ll"
    1947 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    1948         YY_BREAK
    1949 case 21:
     1953{ KEYWORD_RETURN(AUTO); }
     1954        YY_BREAK
     1955case 22:
    19501956YY_RULE_SETUP
    19511957#line 191 "lex.ll"
    1952 { KEYWORD_RETURN(AUTO); }
    1953         YY_BREAK
    1954 case 22:
     1958{ KEYWORD_RETURN(BOOL); }                               // C99
     1959        YY_BREAK
     1960case 23:
    19551961YY_RULE_SETUP
    19561962#line 192 "lex.ll"
    1957 { KEYWORD_RETURN(BOOL); }                               // C99
    1958         YY_BREAK
    1959 case 23:
     1963{ KEYWORD_RETURN(BREAK); }
     1964        YY_BREAK
     1965case 24:
    19601966YY_RULE_SETUP
    19611967#line 193 "lex.ll"
    1962 { KEYWORD_RETURN(BREAK); }
    1963         YY_BREAK
    1964 case 24:
     1968{ KEYWORD_RETURN(CASE); }
     1969        YY_BREAK
     1970case 25:
    19651971YY_RULE_SETUP
    19661972#line 194 "lex.ll"
    1967 { KEYWORD_RETURN(CASE); }
    1968         YY_BREAK
    1969 case 25:
     1973{ KEYWORD_RETURN(CATCH); }                              // CFA
     1974        YY_BREAK
     1975case 26:
    19701976YY_RULE_SETUP
    19711977#line 195 "lex.ll"
    1972 { KEYWORD_RETURN(CATCH); }                              // CFA
    1973         YY_BREAK
    1974 case 26:
     1978{ KEYWORD_RETURN(CATCHRESUME); }                // CFA
     1979        YY_BREAK
     1980case 27:
    19751981YY_RULE_SETUP
    19761982#line 196 "lex.ll"
    1977 { KEYWORD_RETURN(CATCHRESUME); }                // CFA
    1978         YY_BREAK
    1979 case 27:
     1983{ KEYWORD_RETURN(CHAR); }
     1984        YY_BREAK
     1985case 28:
    19801986YY_RULE_SETUP
    19811987#line 197 "lex.ll"
    1982 { KEYWORD_RETURN(CHAR); }
    1983         YY_BREAK
    1984 case 28:
     1988{ KEYWORD_RETURN(CHOOSE); }                             // CFA
     1989        YY_BREAK
     1990case 29:
    19851991YY_RULE_SETUP
    19861992#line 198 "lex.ll"
    1987 { KEYWORD_RETURN(CHOOSE); }                             // CFA
    1988         YY_BREAK
    1989 case 29:
     1993{ KEYWORD_RETURN(COMPLEX); }                    // C99
     1994        YY_BREAK
     1995case 30:
    19901996YY_RULE_SETUP
    19911997#line 199 "lex.ll"
    1992 { KEYWORD_RETURN(COMPLEX); }                    // C99
    1993         YY_BREAK
    1994 case 30:
     1998{ KEYWORD_RETURN(COMPLEX); }                    // GCC
     1999        YY_BREAK
     2000case 31:
    19952001YY_RULE_SETUP
    19962002#line 200 "lex.ll"
    19972003{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    19982004        YY_BREAK
    1999 case 31:
     2005case 32:
    20002006YY_RULE_SETUP
    20012007#line 201 "lex.ll"
    2002 { KEYWORD_RETURN(COMPLEX); }                    // GCC
    2003         YY_BREAK
    2004 case 32:
     2008{ KEYWORD_RETURN(CONST); }
     2009        YY_BREAK
     2010case 33:
    20052011YY_RULE_SETUP
    20062012#line 202 "lex.ll"
    2007 { KEYWORD_RETURN(CONST); }
    2008         YY_BREAK
    2009 case 33:
     2013{ KEYWORD_RETURN(CONST); }                              // GCC
     2014        YY_BREAK
     2015case 34:
    20102016YY_RULE_SETUP
    20112017#line 203 "lex.ll"
    20122018{ KEYWORD_RETURN(CONST); }                              // GCC
    20132019        YY_BREAK
    2014 case 34:
     2020case 35:
    20152021YY_RULE_SETUP
    20162022#line 204 "lex.ll"
    2017 { KEYWORD_RETURN(CONST); }                              // GCC
    2018         YY_BREAK
    2019 case 35:
     2023{ KEYWORD_RETURN(CONTINUE); }
     2024        YY_BREAK
     2025case 36:
    20202026YY_RULE_SETUP
    20212027#line 205 "lex.ll"
    2022 { KEYWORD_RETURN(CONTINUE); }
    2023         YY_BREAK
    2024 case 36:
     2028{ KEYWORD_RETURN(DEFAULT); }
     2029        YY_BREAK
     2030case 37:
    20252031YY_RULE_SETUP
    20262032#line 206 "lex.ll"
    2027 { KEYWORD_RETURN(DEFAULT); }
    2028         YY_BREAK
    2029 case 37:
     2033{ KEYWORD_RETURN(DISABLE); }                    // CFA
     2034        YY_BREAK
     2035case 38:
    20302036YY_RULE_SETUP
    20312037#line 207 "lex.ll"
    2032 { KEYWORD_RETURN(DISABLE); }                    // CFA
    2033         YY_BREAK
    2034 case 38:
     2038{ KEYWORD_RETURN(DO); }
     2039        YY_BREAK
     2040case 39:
    20352041YY_RULE_SETUP
    20362042#line 208 "lex.ll"
    2037 { KEYWORD_RETURN(DO); }
    2038         YY_BREAK
    2039 case 39:
     2043{ KEYWORD_RETURN(DOUBLE); }
     2044        YY_BREAK
     2045case 40:
    20402046YY_RULE_SETUP
    20412047#line 209 "lex.ll"
    2042 { KEYWORD_RETURN(DOUBLE); }
    2043         YY_BREAK
    2044 case 40:
     2048{ KEYWORD_RETURN(DTYPE); }                              // CFA
     2049        YY_BREAK
     2050case 41:
    20452051YY_RULE_SETUP
    20462052#line 210 "lex.ll"
    2047 { KEYWORD_RETURN(DTYPE); }                              // CFA
    2048         YY_BREAK
    2049 case 41:
     2053{ KEYWORD_RETURN(ELSE); }
     2054        YY_BREAK
     2055case 42:
    20502056YY_RULE_SETUP
    20512057#line 211 "lex.ll"
    2052 { KEYWORD_RETURN(ELSE); }
    2053         YY_BREAK
    2054 case 42:
     2058{ KEYWORD_RETURN(ENABLE); }                             // CFA
     2059        YY_BREAK
     2060case 43:
    20552061YY_RULE_SETUP
    20562062#line 212 "lex.ll"
    2057 { KEYWORD_RETURN(ENABLE); }                             // CFA
    2058         YY_BREAK
    2059 case 43:
     2063{ KEYWORD_RETURN(ENUM); }
     2064        YY_BREAK
     2065case 44:
    20602066YY_RULE_SETUP
    20612067#line 213 "lex.ll"
    2062 { KEYWORD_RETURN(ENUM); }
    2063         YY_BREAK
    2064 case 44:
     2068{ KEYWORD_RETURN(EXTENSION); }                  // GCC
     2069        YY_BREAK
     2070case 45:
    20652071YY_RULE_SETUP
    20662072#line 214 "lex.ll"
    2067 { KEYWORD_RETURN(EXTENSION); }                  // GCC
    2068         YY_BREAK
    2069 case 45:
     2073{ KEYWORD_RETURN(EXTERN); }
     2074        YY_BREAK
     2075case 46:
    20702076YY_RULE_SETUP
    20712077#line 215 "lex.ll"
    2072 { KEYWORD_RETURN(EXTERN); }
    2073         YY_BREAK
    2074 case 46:
     2078{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
     2079        YY_BREAK
     2080case 47:
    20752081YY_RULE_SETUP
    20762082#line 216 "lex.ll"
    2077 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    2078         YY_BREAK
    2079 case 47:
     2083{ KEYWORD_RETURN(FINALLY); }                    // CFA
     2084        YY_BREAK
     2085case 48:
    20802086YY_RULE_SETUP
    20812087#line 217 "lex.ll"
    2082 { KEYWORD_RETURN(FINALLY); }                    // CFA
    2083         YY_BREAK
    2084 case 48:
     2088{ KEYWORD_RETURN(FLOAT); }
     2089        YY_BREAK
     2090case 49:
    20852091YY_RULE_SETUP
    20862092#line 218 "lex.ll"
    2087 { KEYWORD_RETURN(FLOAT); }
    2088         YY_BREAK
    2089 case 49:
     2093{ KEYWORD_RETURN(FLOAT); }                              // GCC
     2094        YY_BREAK
     2095case 50:
    20902096YY_RULE_SETUP
    20912097#line 219 "lex.ll"
    2092 { KEYWORD_RETURN(FLOAT); }                              // GCC
    2093         YY_BREAK
    2094 case 50:
     2098{ KEYWORD_RETURN(FOR); }
     2099        YY_BREAK
     2100case 51:
    20952101YY_RULE_SETUP
    20962102#line 220 "lex.ll"
    2097 { KEYWORD_RETURN(FOR); }
    2098         YY_BREAK
    2099 case 51:
     2103{ KEYWORD_RETURN(FORALL); }                             // CFA
     2104        YY_BREAK
     2105case 52:
    21002106YY_RULE_SETUP
    21012107#line 221 "lex.ll"
    2102 { KEYWORD_RETURN(FORALL); }                             // CFA
    2103         YY_BREAK
    2104 case 52:
     2108{ KEYWORD_RETURN(FORTRAN); }
     2109        YY_BREAK
     2110case 53:
    21052111YY_RULE_SETUP
    21062112#line 222 "lex.ll"
    2107 { KEYWORD_RETURN(FORTRAN); }
    2108         YY_BREAK
    2109 case 53:
     2113{ KEYWORD_RETURN(FTYPE); }                              // CFA
     2114        YY_BREAK
     2115case 54:
    21102116YY_RULE_SETUP
    21112117#line 223 "lex.ll"
    2112 { KEYWORD_RETURN(FTYPE); }                              // CFA
    2113         YY_BREAK
    2114 case 54:
     2118{ KEYWORD_RETURN(GENERIC); }                    // C11
     2119        YY_BREAK
     2120case 55:
    21152121YY_RULE_SETUP
    21162122#line 224 "lex.ll"
    2117 { KEYWORD_RETURN(GENERIC); }                    // C11
    2118         YY_BREAK
    2119 case 55:
     2123{ KEYWORD_RETURN(GOTO); }
     2124        YY_BREAK
     2125case 56:
    21202126YY_RULE_SETUP
    21212127#line 225 "lex.ll"
    2122 { KEYWORD_RETURN(GOTO); }
    2123         YY_BREAK
    2124 case 56:
     2128{ KEYWORD_RETURN(IF); }
     2129        YY_BREAK
     2130case 57:
    21252131YY_RULE_SETUP
    21262132#line 226 "lex.ll"
    2127 { KEYWORD_RETURN(IF); }
    2128         YY_BREAK
    2129 case 57:
     2133{ KEYWORD_RETURN(IMAGINARY); }                  // C99
     2134        YY_BREAK
     2135case 58:
    21302136YY_RULE_SETUP
    21312137#line 227 "lex.ll"
    2132 { KEYWORD_RETURN(IMAGINARY); }                  // C99
    2133         YY_BREAK
    2134 case 58:
     2138{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2139        YY_BREAK
     2140case 59:
    21352141YY_RULE_SETUP
    21362142#line 228 "lex.ll"
    21372143{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    21382144        YY_BREAK
    2139 case 59:
     2145case 60:
    21402146YY_RULE_SETUP
    21412147#line 229 "lex.ll"
    2142 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2143         YY_BREAK
    2144 case 60:
     2148{ KEYWORD_RETURN(INLINE); }                             // C99
     2149        YY_BREAK
     2150case 61:
    21452151YY_RULE_SETUP
    21462152#line 230 "lex.ll"
    2147 { KEYWORD_RETURN(INLINE); }                             // C99
    2148         YY_BREAK
    2149 case 61:
     2153{ KEYWORD_RETURN(INLINE); }                             // GCC
     2154        YY_BREAK
     2155case 62:
    21502156YY_RULE_SETUP
    21512157#line 231 "lex.ll"
    21522158{ KEYWORD_RETURN(INLINE); }                             // GCC
    21532159        YY_BREAK
    2154 case 62:
     2160case 63:
    21552161YY_RULE_SETUP
    21562162#line 232 "lex.ll"
    2157 { KEYWORD_RETURN(INLINE); }                             // GCC
    2158         YY_BREAK
    2159 case 63:
     2163{ KEYWORD_RETURN(INT); }
     2164        YY_BREAK
     2165case 64:
    21602166YY_RULE_SETUP
    21612167#line 233 "lex.ll"
    2162 { KEYWORD_RETURN(INT); }
    2163         YY_BREAK
    2164 case 64:
     2168{ KEYWORD_RETURN(INT); }                                // GCC
     2169        YY_BREAK
     2170case 65:
    21652171YY_RULE_SETUP
    21662172#line 234 "lex.ll"
    2167 { KEYWORD_RETURN(INT); }                                // GCC
    2168         YY_BREAK
    2169 case 65:
     2173{ KEYWORD_RETURN(LABEL); }                              // GCC
     2174        YY_BREAK
     2175case 66:
    21702176YY_RULE_SETUP
    21712177#line 235 "lex.ll"
    2172 { KEYWORD_RETURN(LABEL); }                              // GCC
    2173         YY_BREAK
    2174 case 66:
     2178{ KEYWORD_RETURN(LONG); }
     2179        YY_BREAK
     2180case 67:
    21752181YY_RULE_SETUP
    21762182#line 236 "lex.ll"
    2177 { KEYWORD_RETURN(LONG); }
    2178         YY_BREAK
    2179 case 67:
     2183{ KEYWORD_RETURN(LVALUE); }                             // CFA
     2184        YY_BREAK
     2185case 68:
    21802186YY_RULE_SETUP
    21812187#line 237 "lex.ll"
    2182 { KEYWORD_RETURN(LVALUE); }                             // CFA
    2183         YY_BREAK
    2184 case 68:
     2188{ KEYWORD_RETURN(NORETURN); }                   // C11
     2189        YY_BREAK
     2190case 69:
    21852191YY_RULE_SETUP
    21862192#line 238 "lex.ll"
    2187 { KEYWORD_RETURN(NORETURN); }                   // C11
    2188         YY_BREAK
    2189 case 69:
     2193{ KEYWORD_RETURN(OFFSETOF); }           // GCC
     2194        YY_BREAK
     2195case 70:
    21902196YY_RULE_SETUP
    21912197#line 239 "lex.ll"
    2192 { KEYWORD_RETURN(OFFSETOF); }           // GCC
    2193         YY_BREAK
    2194 case 70:
     2198{ KEYWORD_RETURN(OTYPE); }                              // CFA
     2199        YY_BREAK
     2200case 71:
    21952201YY_RULE_SETUP
    21962202#line 240 "lex.ll"
    2197 { KEYWORD_RETURN(OTYPE); }                              // CFA
    2198         YY_BREAK
    2199 case 71:
     2203{ KEYWORD_RETURN(REGISTER); }
     2204        YY_BREAK
     2205case 72:
    22002206YY_RULE_SETUP
    22012207#line 241 "lex.ll"
    2202 { KEYWORD_RETURN(REGISTER); }
    2203         YY_BREAK
    2204 case 72:
     2208{ KEYWORD_RETURN(RESTRICT); }                   // C99
     2209        YY_BREAK
     2210case 73:
    22052211YY_RULE_SETUP
    22062212#line 242 "lex.ll"
    2207 { KEYWORD_RETURN(RESTRICT); }                   // C99
    2208         YY_BREAK
    2209 case 73:
     2213{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2214        YY_BREAK
     2215case 74:
    22102216YY_RULE_SETUP
    22112217#line 243 "lex.ll"
    22122218{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    22132219        YY_BREAK
    2214 case 74:
     2220case 75:
    22152221YY_RULE_SETUP
    22162222#line 244 "lex.ll"
    2217 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    2218         YY_BREAK
    2219 case 75:
     2223{ KEYWORD_RETURN(RETURN); }
     2224        YY_BREAK
     2225case 76:
    22202226YY_RULE_SETUP
    22212227#line 245 "lex.ll"
    2222 { KEYWORD_RETURN(RETURN); }
    2223         YY_BREAK
    2224 case 76:
     2228{ KEYWORD_RETURN(SHORT); }
     2229        YY_BREAK
     2230case 77:
    22252231YY_RULE_SETUP
    22262232#line 246 "lex.ll"
    2227 { KEYWORD_RETURN(SHORT); }
    2228         YY_BREAK
    2229 case 77:
     2233{ KEYWORD_RETURN(SIGNED); }
     2234        YY_BREAK
     2235case 78:
    22302236YY_RULE_SETUP
    22312237#line 247 "lex.ll"
    2232 { KEYWORD_RETURN(SIGNED); }
    2233         YY_BREAK
    2234 case 78:
     2238{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2239        YY_BREAK
     2240case 79:
    22352241YY_RULE_SETUP
    22362242#line 248 "lex.ll"
    22372243{ KEYWORD_RETURN(SIGNED); }                             // GCC
    22382244        YY_BREAK
    2239 case 79:
     2245case 80:
    22402246YY_RULE_SETUP
    22412247#line 249 "lex.ll"
    2242 { KEYWORD_RETURN(SIGNED); }                             // GCC
    2243         YY_BREAK
    2244 case 80:
     2248{ KEYWORD_RETURN(SIZEOF); }
     2249        YY_BREAK
     2250case 81:
    22452251YY_RULE_SETUP
    22462252#line 250 "lex.ll"
    2247 { KEYWORD_RETURN(SIZEOF); }
    2248         YY_BREAK
    2249 case 81:
     2253{ KEYWORD_RETURN(STATIC); }
     2254        YY_BREAK
     2255case 82:
    22502256YY_RULE_SETUP
    22512257#line 251 "lex.ll"
    2252 { KEYWORD_RETURN(STATIC); }
    2253         YY_BREAK
    2254 case 82:
     2258{ KEYWORD_RETURN(STATICASSERT); }               // C11
     2259        YY_BREAK
     2260case 83:
    22552261YY_RULE_SETUP
    22562262#line 252 "lex.ll"
    2257 { KEYWORD_RETURN(STATICASSERT); }               // C11
    2258         YY_BREAK
    2259 case 83:
     2263{ KEYWORD_RETURN(STRUCT); }
     2264        YY_BREAK
     2265case 84:
    22602266YY_RULE_SETUP
    22612267#line 253 "lex.ll"
    2262 { KEYWORD_RETURN(STRUCT); }
    2263         YY_BREAK
    2264 case 84:
     2268{ KEYWORD_RETURN(SWITCH); }
     2269        YY_BREAK
     2270case 85:
    22652271YY_RULE_SETUP
    22662272#line 254 "lex.ll"
    2267 { KEYWORD_RETURN(SWITCH); }
    2268         YY_BREAK
    2269 case 85:
     2273{ KEYWORD_RETURN(THREADLOCAL); }                // C11
     2274        YY_BREAK
     2275case 86:
    22702276YY_RULE_SETUP
    22712277#line 255 "lex.ll"
    2272 { KEYWORD_RETURN(THREADLOCAL); }                // C11
    2273         YY_BREAK
    2274 case 86:
     2278{ KEYWORD_RETURN(THROW); }                              // CFA
     2279        YY_BREAK
     2280case 87:
    22752281YY_RULE_SETUP
    22762282#line 256 "lex.ll"
    2277 { KEYWORD_RETURN(THROW); }                              // CFA
    2278         YY_BREAK
    2279 case 87:
     2283{ KEYWORD_RETURN(THROWRESUME); }                // CFA
     2284        YY_BREAK
     2285case 88:
    22802286YY_RULE_SETUP
    22812287#line 257 "lex.ll"
    2282 { KEYWORD_RETURN(THROWRESUME); }                // CFA
    2283         YY_BREAK
    2284 case 88:
     2288{ KEYWORD_RETURN(TRAIT); }                              // CFA
     2289        YY_BREAK
     2290case 89:
    22852291YY_RULE_SETUP
    22862292#line 258 "lex.ll"
    2287 { KEYWORD_RETURN(TRAIT); }                              // CFA
    2288         YY_BREAK
    2289 case 89:
     2293{ KEYWORD_RETURN(TRY); }                                // CFA
     2294        YY_BREAK
     2295case 90:
    22902296YY_RULE_SETUP
    22912297#line 259 "lex.ll"
    2292 { KEYWORD_RETURN(TRY); }                                // CFA
    2293         YY_BREAK
    2294 case 90:
     2298{ KEYWORD_RETURN(TYPEDEF); }
     2299        YY_BREAK
     2300case 91:
    22952301YY_RULE_SETUP
    22962302#line 260 "lex.ll"
    2297 { KEYWORD_RETURN(TYPEDEF); }
    2298         YY_BREAK
    2299 case 91:
     2303{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2304        YY_BREAK
     2305case 92:
    23002306YY_RULE_SETUP
    23012307#line 261 "lex.ll"
    23022308{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23032309        YY_BREAK
    2304 case 92:
     2310case 93:
    23052311YY_RULE_SETUP
    23062312#line 262 "lex.ll"
    23072313{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23082314        YY_BREAK
    2309 case 93:
     2315case 94:
    23102316YY_RULE_SETUP
    23112317#line 263 "lex.ll"
    2312 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2313         YY_BREAK
    2314 case 94:
     2318{ KEYWORD_RETURN(UNION); }
     2319        YY_BREAK
     2320case 95:
    23152321YY_RULE_SETUP
    23162322#line 264 "lex.ll"
    2317 { KEYWORD_RETURN(UNION); }
    2318         YY_BREAK
    2319 case 95:
     2323{ KEYWORD_RETURN(UNSIGNED); }
     2324        YY_BREAK
     2325case 96:
    23202326YY_RULE_SETUP
    23212327#line 265 "lex.ll"
    2322 { KEYWORD_RETURN(UNSIGNED); }
    2323         YY_BREAK
    2324 case 96:
     2328{ KEYWORD_RETURN(VALIST); }                     // GCC
     2329        YY_BREAK
     2330case 97:
    23252331YY_RULE_SETUP
    23262332#line 266 "lex.ll"
    2327 { KEYWORD_RETURN(VALIST); }                     // GCC
    2328         YY_BREAK
    2329 case 97:
     2333{ KEYWORD_RETURN(VOID); }
     2334        YY_BREAK
     2335case 98:
    23302336YY_RULE_SETUP
    23312337#line 267 "lex.ll"
    2332 { KEYWORD_RETURN(VOID); }
    2333         YY_BREAK
    2334 case 98:
     2338{ KEYWORD_RETURN(VOLATILE); }
     2339        YY_BREAK
     2340case 99:
    23352341YY_RULE_SETUP
    23362342#line 268 "lex.ll"
    2337 { KEYWORD_RETURN(VOLATILE); }
    2338         YY_BREAK
    2339 case 99:
     2343{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2344        YY_BREAK
     2345case 100:
    23402346YY_RULE_SETUP
    23412347#line 269 "lex.ll"
    23422348{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23432349        YY_BREAK
    2344 case 100:
     2350case 101:
    23452351YY_RULE_SETUP
    23462352#line 270 "lex.ll"
    2347 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    2348         YY_BREAK
    2349 case 101:
    2350 YY_RULE_SETUP
    2351 #line 271 "lex.ll"
    23522353{ KEYWORD_RETURN(WHILE); }
    23532354        YY_BREAK
     
    23552356case 102:
    23562357YY_RULE_SETUP
     2358#line 273 "lex.ll"
     2359{ IDENTIFIER_RETURN(); }
     2360        YY_BREAK
     2361case 103:
     2362YY_RULE_SETUP
    23572363#line 274 "lex.ll"
     2364{ ATTRIBUTE_RETURN(); }
     2365        YY_BREAK
     2366case 104:
     2367YY_RULE_SETUP
     2368#line 275 "lex.ll"
     2369{ BEGIN BKQUOTE; }
     2370        YY_BREAK
     2371case 105:
     2372YY_RULE_SETUP
     2373#line 276 "lex.ll"
    23582374{ IDENTIFIER_RETURN(); }
    23592375        YY_BREAK
    2360 case 103:
    2361 YY_RULE_SETUP
    2362 #line 275 "lex.ll"
    2363 { ATTRIBUTE_RETURN(); }
    2364         YY_BREAK
    2365 case 104:
    2366 YY_RULE_SETUP
    2367 #line 276 "lex.ll"
    2368 { BEGIN BKQUOTE; }
    2369         YY_BREAK
    2370 case 105:
     2376case 106:
    23712377YY_RULE_SETUP
    23722378#line 277 "lex.ll"
    2373 { IDENTIFIER_RETURN(); }
    2374         YY_BREAK
    2375 case 106:
    2376 YY_RULE_SETUP
    2377 #line 278 "lex.ll"
    23782379{ BEGIN 0; }
    23792380        YY_BREAK
     
    23812382case 107:
    23822383YY_RULE_SETUP
     2384#line 280 "lex.ll"
     2385{ NUMERIC_RETURN(ZERO); }                               // CFA
     2386        YY_BREAK
     2387case 108:
     2388YY_RULE_SETUP
    23832389#line 281 "lex.ll"
    2384 { NUMERIC_RETURN(ZERO); }                               // CFA
    2385         YY_BREAK
    2386 case 108:
     2390{ NUMERIC_RETURN(ONE); }                                // CFA
     2391        YY_BREAK
     2392case 109:
    23872393YY_RULE_SETUP
    23882394#line 282 "lex.ll"
    2389 { NUMERIC_RETURN(ONE); }                                // CFA
    2390         YY_BREAK
    2391 case 109:
     2395{ NUMERIC_RETURN(INTEGERconstant); }
     2396        YY_BREAK
     2397case 110:
    23922398YY_RULE_SETUP
    23932399#line 283 "lex.ll"
    23942400{ NUMERIC_RETURN(INTEGERconstant); }
    23952401        YY_BREAK
    2396 case 110:
     2402case 111:
    23972403YY_RULE_SETUP
    23982404#line 284 "lex.ll"
    23992405{ NUMERIC_RETURN(INTEGERconstant); }
    24002406        YY_BREAK
    2401 case 111:
     2407case 112:
    24022408YY_RULE_SETUP
    24032409#line 285 "lex.ll"
    2404 { NUMERIC_RETURN(INTEGERconstant); }
    2405         YY_BREAK
    2406 case 112:
     2410{ NUMERIC_RETURN(FLOATINGconstant); }
     2411        YY_BREAK
     2412case 113:
    24072413YY_RULE_SETUP
    24082414#line 286 "lex.ll"
    24092415{ NUMERIC_RETURN(FLOATINGconstant); }
    24102416        YY_BREAK
    2411 case 113:
    2412 YY_RULE_SETUP
    2413 #line 287 "lex.ll"
    2414 { NUMERIC_RETURN(FLOATINGconstant); }
    2415         YY_BREAK
    24162417/* character constant, allows empty value */
    24172418case 114:
    24182419YY_RULE_SETUP
     2420#line 289 "lex.ll"
     2421{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2422        YY_BREAK
     2423case 115:
     2424YY_RULE_SETUP
    24192425#line 290 "lex.ll"
    2420 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    2421         YY_BREAK
    2422 case 115:
    2423 YY_RULE_SETUP
    2424 #line 291 "lex.ll"
    24252426{ *strtext += std::string( yytext ); }
    24262427        YY_BREAK
     
    24282429/* rule 116 can match eol */
    24292430YY_RULE_SETUP
    2430 #line 292 "lex.ll"
     2431#line 291 "lex.ll"
    24312432{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    24322433        YY_BREAK
     
    24352436case 117:
    24362437YY_RULE_SETUP
     2438#line 295 "lex.ll"
     2439{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2440        YY_BREAK
     2441case 118:
     2442YY_RULE_SETUP
    24372443#line 296 "lex.ll"
    2438 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    2439         YY_BREAK
    2440 case 118:
    2441 YY_RULE_SETUP
    2442 #line 297 "lex.ll"
    24432444{ *strtext += std::string( yytext ); }
    24442445        YY_BREAK
     
    24462447/* rule 119 can match eol */
    24472448YY_RULE_SETUP
    2448 #line 298 "lex.ll"
     2449#line 297 "lex.ll"
    24492450{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    24502451        YY_BREAK
     
    24532454case 120:
    24542455YY_RULE_SETUP
    2455 #line 302 "lex.ll"
     2456#line 301 "lex.ll"
    24562457{ rm_underscore(); *strtext += std::string( yytext ); }
    24572458        YY_BREAK
     
    24592460/* rule 121 can match eol */
    24602461YY_RULE_SETUP
     2462#line 302 "lex.ll"
     2463{}                                              // continuation (ALSO HANDLED BY CPP)
     2464        YY_BREAK
     2465case 122:
     2466YY_RULE_SETUP
    24612467#line 303 "lex.ll"
    2462 {}                                              // continuation (ALSO HANDLED BY CPP)
    2463         YY_BREAK
    2464 case 122:
    2465 YY_RULE_SETUP
    2466 #line 304 "lex.ll"
    24672468{ *strtext += std::string( yytext ); } // unknown escape character
    24682469        YY_BREAK
     
    24702471case 123:
    24712472YY_RULE_SETUP
     2473#line 306 "lex.ll"
     2474{ ASCIIOP_RETURN(); }
     2475        YY_BREAK
     2476case 124:
     2477YY_RULE_SETUP
    24722478#line 307 "lex.ll"
    24732479{ ASCIIOP_RETURN(); }
    24742480        YY_BREAK
    2475 case 124:
     2481case 125:
    24762482YY_RULE_SETUP
    24772483#line 308 "lex.ll"
    24782484{ ASCIIOP_RETURN(); }
    24792485        YY_BREAK
    2480 case 125:
     2486case 126:
    24812487YY_RULE_SETUP
    24822488#line 309 "lex.ll"
    24832489{ ASCIIOP_RETURN(); }
    24842490        YY_BREAK
    2485 case 126:
     2491case 127:
    24862492YY_RULE_SETUP
    24872493#line 310 "lex.ll"
    24882494{ ASCIIOP_RETURN(); }
    24892495        YY_BREAK
    2490 case 127:
     2496case 128:
    24912497YY_RULE_SETUP
    24922498#line 311 "lex.ll"
    24932499{ ASCIIOP_RETURN(); }
    24942500        YY_BREAK
    2495 case 128:
     2501case 129:
    24962502YY_RULE_SETUP
    24972503#line 312 "lex.ll"
     2504{ ASCIIOP_RETURN(); }                                   // also operator
     2505        YY_BREAK
     2506case 130:
     2507YY_RULE_SETUP
     2508#line 313 "lex.ll"
    24982509{ ASCIIOP_RETURN(); }
    24992510        YY_BREAK
    2500 case 129:
    2501 YY_RULE_SETUP
    2502 #line 313 "lex.ll"
    2503 { ASCIIOP_RETURN(); }                                   // also operator
    2504         YY_BREAK
    2505 case 130:
     2511case 131:
    25062512YY_RULE_SETUP
    25072513#line 314 "lex.ll"
    25082514{ ASCIIOP_RETURN(); }
    25092515        YY_BREAK
    2510 case 131:
     2516case 132:
    25112517YY_RULE_SETUP
    25122518#line 315 "lex.ll"
    2513 { ASCIIOP_RETURN(); }
    2514         YY_BREAK
    2515 case 132:
     2519{ ASCIIOP_RETURN(); }                                   // also operator
     2520        YY_BREAK
     2521case 133:
    25162522YY_RULE_SETUP
    25172523#line 316 "lex.ll"
    2518 { ASCIIOP_RETURN(); }                                   // also operator
    2519         YY_BREAK
    2520 case 133:
    2521 YY_RULE_SETUP
    2522 #line 317 "lex.ll"
    25232524{ NAMEDOP_RETURN(ELLIPSIS); }
    25242525        YY_BREAK
     
    25262527case 134:
    25272528YY_RULE_SETUP
     2529#line 319 "lex.ll"
     2530{ RETURN_VAL('['); }
     2531        YY_BREAK
     2532case 135:
     2533YY_RULE_SETUP
    25282534#line 320 "lex.ll"
    2529 { RETURN_VAL('['); }
    2530         YY_BREAK
    2531 case 135:
     2535{ RETURN_VAL(']'); }
     2536        YY_BREAK
     2537case 136:
    25322538YY_RULE_SETUP
    25332539#line 321 "lex.ll"
    2534 { RETURN_VAL(']'); }
    2535         YY_BREAK
    2536 case 136:
     2540{ RETURN_VAL('{'); }
     2541        YY_BREAK
     2542case 137:
    25372543YY_RULE_SETUP
    25382544#line 322 "lex.ll"
    2539 { RETURN_VAL('{'); }
    2540         YY_BREAK
    2541 case 137:
    2542 YY_RULE_SETUP
    2543 #line 323 "lex.ll"
    25442545{ RETURN_VAL('}'); }
    25452546        YY_BREAK
     
    25472548case 138:
    25482549YY_RULE_SETUP
     2550#line 325 "lex.ll"
     2551{ ASCIIOP_RETURN(); }
     2552        YY_BREAK
     2553case 139:
     2554YY_RULE_SETUP
    25492555#line 326 "lex.ll"
    25502556{ ASCIIOP_RETURN(); }
    25512557        YY_BREAK
    2552 case 139:
     2558case 140:
    25532559YY_RULE_SETUP
    25542560#line 327 "lex.ll"
    25552561{ ASCIIOP_RETURN(); }
    25562562        YY_BREAK
    2557 case 140:
     2563case 141:
    25582564YY_RULE_SETUP
    25592565#line 328 "lex.ll"
    25602566{ ASCIIOP_RETURN(); }
    25612567        YY_BREAK
    2562 case 141:
     2568case 142:
    25632569YY_RULE_SETUP
    25642570#line 329 "lex.ll"
    25652571{ ASCIIOP_RETURN(); }
    25662572        YY_BREAK
    2567 case 142:
     2573case 143:
    25682574YY_RULE_SETUP
    25692575#line 330 "lex.ll"
    25702576{ ASCIIOP_RETURN(); }
    25712577        YY_BREAK
    2572 case 143:
     2578case 144:
    25732579YY_RULE_SETUP
    25742580#line 331 "lex.ll"
    25752581{ ASCIIOP_RETURN(); }
    25762582        YY_BREAK
    2577 case 144:
     2583case 145:
    25782584YY_RULE_SETUP
    25792585#line 332 "lex.ll"
    25802586{ ASCIIOP_RETURN(); }
    25812587        YY_BREAK
    2582 case 145:
     2588case 146:
    25832589YY_RULE_SETUP
    25842590#line 333 "lex.ll"
    25852591{ ASCIIOP_RETURN(); }
    25862592        YY_BREAK
    2587 case 146:
     2593case 147:
    25882594YY_RULE_SETUP
    25892595#line 334 "lex.ll"
    25902596{ ASCIIOP_RETURN(); }
    25912597        YY_BREAK
    2592 case 147:
     2598case 148:
    25932599YY_RULE_SETUP
    25942600#line 335 "lex.ll"
    25952601{ ASCIIOP_RETURN(); }
    25962602        YY_BREAK
    2597 case 148:
     2603case 149:
    25982604YY_RULE_SETUP
    25992605#line 336 "lex.ll"
    26002606{ ASCIIOP_RETURN(); }
    26012607        YY_BREAK
    2602 case 149:
     2608case 150:
    26032609YY_RULE_SETUP
    26042610#line 337 "lex.ll"
    26052611{ ASCIIOP_RETURN(); }
    26062612        YY_BREAK
    2607 case 150:
     2613case 151:
    26082614YY_RULE_SETUP
    26092615#line 338 "lex.ll"
    26102616{ ASCIIOP_RETURN(); }
    26112617        YY_BREAK
    2612 case 151:
    2613 YY_RULE_SETUP
    2614 #line 339 "lex.ll"
    2615 { ASCIIOP_RETURN(); }
    2616         YY_BREAK
    26172618case 152:
    26182619YY_RULE_SETUP
     2620#line 340 "lex.ll"
     2621{ NAMEDOP_RETURN(ICR); }
     2622        YY_BREAK
     2623case 153:
     2624YY_RULE_SETUP
    26192625#line 341 "lex.ll"
    2620 { NAMEDOP_RETURN(ICR); }
    2621         YY_BREAK
    2622 case 153:
     2626{ NAMEDOP_RETURN(DECR); }
     2627        YY_BREAK
     2628case 154:
    26232629YY_RULE_SETUP
    26242630#line 342 "lex.ll"
    2625 { NAMEDOP_RETURN(DECR); }
    2626         YY_BREAK
    2627 case 154:
     2631{ NAMEDOP_RETURN(EQ); }
     2632        YY_BREAK
     2633case 155:
    26282634YY_RULE_SETUP
    26292635#line 343 "lex.ll"
    2630 { NAMEDOP_RETURN(EQ); }
    2631         YY_BREAK
    2632 case 155:
     2636{ NAMEDOP_RETURN(NE); }
     2637        YY_BREAK
     2638case 156:
    26332639YY_RULE_SETUP
    26342640#line 344 "lex.ll"
    2635 { NAMEDOP_RETURN(NE); }
    2636         YY_BREAK
    2637 case 156:
     2641{ NAMEDOP_RETURN(LS); }
     2642        YY_BREAK
     2643case 157:
    26382644YY_RULE_SETUP
    26392645#line 345 "lex.ll"
    2640 { NAMEDOP_RETURN(LS); }
    2641         YY_BREAK
    2642 case 157:
     2646{ NAMEDOP_RETURN(RS); }
     2647        YY_BREAK
     2648case 158:
    26432649YY_RULE_SETUP
    26442650#line 346 "lex.ll"
    2645 { NAMEDOP_RETURN(RS); }
    2646         YY_BREAK
    2647 case 158:
     2651{ NAMEDOP_RETURN(LE); }
     2652        YY_BREAK
     2653case 159:
    26482654YY_RULE_SETUP
    26492655#line 347 "lex.ll"
    2650 { NAMEDOP_RETURN(LE); }
    2651         YY_BREAK
    2652 case 159:
     2656{ NAMEDOP_RETURN(GE); }
     2657        YY_BREAK
     2658case 160:
    26532659YY_RULE_SETUP
    26542660#line 348 "lex.ll"
    2655 { NAMEDOP_RETURN(GE); }
    2656         YY_BREAK
    2657 case 160:
     2661{ NAMEDOP_RETURN(ANDAND); }
     2662        YY_BREAK
     2663case 161:
    26582664YY_RULE_SETUP
    26592665#line 349 "lex.ll"
    2660 { NAMEDOP_RETURN(ANDAND); }
    2661         YY_BREAK
    2662 case 161:
     2666{ NAMEDOP_RETURN(OROR); }
     2667        YY_BREAK
     2668case 162:
    26632669YY_RULE_SETUP
    26642670#line 350 "lex.ll"
    2665 { NAMEDOP_RETURN(OROR); }
    2666         YY_BREAK
    2667 case 162:
     2671{ NAMEDOP_RETURN(ARROW); }
     2672        YY_BREAK
     2673case 163:
    26682674YY_RULE_SETUP
    26692675#line 351 "lex.ll"
    2670 { NAMEDOP_RETURN(ARROW); }
    2671         YY_BREAK
    2672 case 163:
     2676{ NAMEDOP_RETURN(PLUSassign); }
     2677        YY_BREAK
     2678case 164:
    26732679YY_RULE_SETUP
    26742680#line 352 "lex.ll"
    2675 { NAMEDOP_RETURN(PLUSassign); }
    2676         YY_BREAK
    2677 case 164:
     2681{ NAMEDOP_RETURN(MINUSassign); }
     2682        YY_BREAK
     2683case 165:
    26782684YY_RULE_SETUP
    26792685#line 353 "lex.ll"
    2680 { NAMEDOP_RETURN(MINUSassign); }
    2681         YY_BREAK
    2682 case 165:
     2686{ NAMEDOP_RETURN(MULTassign); }
     2687        YY_BREAK
     2688case 166:
    26832689YY_RULE_SETUP
    26842690#line 354 "lex.ll"
    2685 { NAMEDOP_RETURN(MULTassign); }
    2686         YY_BREAK
    2687 case 166:
     2691{ NAMEDOP_RETURN(DIVassign); }
     2692        YY_BREAK
     2693case 167:
    26882694YY_RULE_SETUP
    26892695#line 355 "lex.ll"
    2690 { NAMEDOP_RETURN(DIVassign); }
    2691         YY_BREAK
    2692 case 167:
     2696{ NAMEDOP_RETURN(MODassign); }
     2697        YY_BREAK
     2698case 168:
    26932699YY_RULE_SETUP
    26942700#line 356 "lex.ll"
    2695 { NAMEDOP_RETURN(MODassign); }
    2696         YY_BREAK
    2697 case 168:
     2701{ NAMEDOP_RETURN(ANDassign); }
     2702        YY_BREAK
     2703case 169:
    26982704YY_RULE_SETUP
    26992705#line 357 "lex.ll"
    2700 { NAMEDOP_RETURN(ANDassign); }
    2701         YY_BREAK
    2702 case 169:
     2706{ NAMEDOP_RETURN(ORassign); }
     2707        YY_BREAK
     2708case 170:
    27032709YY_RULE_SETUP
    27042710#line 358 "lex.ll"
    2705 { NAMEDOP_RETURN(ORassign); }
    2706         YY_BREAK
    2707 case 170:
     2711{ NAMEDOP_RETURN(ERassign); }
     2712        YY_BREAK
     2713case 171:
    27082714YY_RULE_SETUP
    27092715#line 359 "lex.ll"
    2710 { NAMEDOP_RETURN(ERassign); }
    2711         YY_BREAK
    2712 case 171:
     2716{ NAMEDOP_RETURN(LSassign); }
     2717        YY_BREAK
     2718case 172:
    27132719YY_RULE_SETUP
    27142720#line 360 "lex.ll"
    2715 { NAMEDOP_RETURN(LSassign); }
    2716         YY_BREAK
    2717 case 172:
    2718 YY_RULE_SETUP
    2719 #line 361 "lex.ll"
    27202721{ NAMEDOP_RETURN(RSassign); }
    27212722        YY_BREAK
    27222723case 173:
    27232724YY_RULE_SETUP
    2724 #line 363 "lex.ll"
     2725#line 362 "lex.ll"
    27252726{ NAMEDOP_RETURN(ATassign); }
    27262727        YY_BREAK
     
    27282729case 174:
    27292730YY_RULE_SETUP
     2731#line 365 "lex.ll"
     2732{ IDENTIFIER_RETURN(); }                                // unary
     2733        YY_BREAK
     2734case 175:
     2735YY_RULE_SETUP
    27302736#line 366 "lex.ll"
    2731 { IDENTIFIER_RETURN(); }                                // unary
    2732         YY_BREAK
    2733 case 175:
     2737{ IDENTIFIER_RETURN(); }
     2738        YY_BREAK
     2739case 176:
    27342740YY_RULE_SETUP
    27352741#line 367 "lex.ll"
    27362742{ IDENTIFIER_RETURN(); }
    27372743        YY_BREAK
    2738 case 176:
     2744case 177:
    27392745YY_RULE_SETUP
    27402746#line 368 "lex.ll"
    2741 { IDENTIFIER_RETURN(); }
    2742         YY_BREAK
    2743 case 177:
    2744 YY_RULE_SETUP
    2745 #line 369 "lex.ll"
    27462747{ IDENTIFIER_RETURN(); }                // binary
    27472748        YY_BREAK
     
    27742775case 178:
    27752776YY_RULE_SETUP
    2776 #line 396 "lex.ll"
     2777#line 395 "lex.ll"
    27772778{
    27782779        // 1 or 2 character unary operator ?
     
    27892790case 179:
    27902791YY_RULE_SETUP
    2791 #line 408 "lex.ll"
     2792#line 407 "lex.ll"
    27922793{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    27932794        YY_BREAK
    27942795case 180:
    27952796YY_RULE_SETUP
    2796 #line 410 "lex.ll"
     2797#line 409 "lex.ll"
    27972798ECHO;
    27982799        YY_BREAK
    2799 #line 2800 "Parser/lex.cc"
     2800#line 2801 "Parser/lex.cc"
    28002801case YY_STATE_EOF(INITIAL):
    28012802case YY_STATE_EOF(COMMENT):
     
    37723773#define YYTABLES_NAME "yytables"
    37733774
    3774 #line 410 "lex.ll"
     3775#line 409 "lex.ll"
    37753776
    37763777
  • src/Parser/lex.ll

    r1b5c81ed rf80e0218  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Mon Mar 21 23:33:46 2016
    13  * Update Count     : 450
     12 * Last Modified On : Thu Jun 23 07:29:30 2016
     13 * Update Count     : 457
    1414 */
    1515
     
    4949
    5050void rm_underscore() {
    51         // remove underscores in numeric constant
    52         int j = 0;
     51        // Remove underscores in numeric constant by copying the non-underscore characters to the front of the string.
     52        yyleng = 0;
    5353        for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
    5454                if ( yytext[i] != '_' ) {
    55                         yytext[j] = yytext[i];
    56                         j += 1;
     55                        yytext[yyleng] = yytext[i];
     56                        yyleng += 1;
    5757                } // if
    5858        } // for
    59         yyleng = j;
    6059        yytext[yyleng] = '\0';
    6160}
     
    121120h_white [ ]|{h_tab}
    122121
    123                                 // operators
     122                                // overloadable operators
    124123op_unary_only "~"|"!"
    125124op_unary_binary "+"|"-"|"*"
     
    129128op_binary_only "/"|"%"|"^"|"&"|"|"|"<"|">"|"="|"=="|"!="|"<<"|">>"|"<="|">="|"+="|"-="|"*="|"/="|"%="|"&="|"|="|"^="|"<<="|">>="
    130129op_binary_over {op_unary_binary}|{op_binary_only}
    131 op_binary_not_over "?"|"->"|"&&"|"||"
    132 operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
     130                                // op_binary_not_over "?"|"->"|"."|"&&"|"||"|"@="
     131                                // operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
    133132
    134133%x COMMENT
     
    274273{identifier}    { IDENTIFIER_RETURN(); }
    275274{attr_identifier} { ATTRIBUTE_RETURN(); }
    276 "`"                     { BEGIN BKQUOTE; }
     275"`"                             { BEGIN BKQUOTE; }
    277276<BKQUOTE>{identifier} { IDENTIFIER_RETURN(); }
    278277<BKQUOTE>"`"    { BEGIN 0; }
  • src/Parser/parser.cc

    r1b5c81ed rf80e0218  
    6767
    6868/* Line 268 of yacc.c  */
    69 #line 44 "parser.yy"
     69#line 42 "parser.yy"
    7070
    7171#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    342342
    343343/* Line 293 of yacc.c  */
    344 #line 112 "parser.yy"
     344#line 110 "parser.yy"
    345345
    346346        Token tok;
     
    588588
    589589/* YYFINAL -- State number of the termination state.  */
    590 #define YYFINAL  249
     590#define YYFINAL  252
    591591/* YYLAST -- Last index in YYTABLE.  */
    592 #define YYLAST   11449
     592#define YYLAST   12094
    593593
    594594/* YYNTOKENS -- Number of terminals.  */
    595595#define YYNTOKENS  133
    596596/* YYNNTS -- Number of nonterminals.  */
    597 #define YYNNTS  240
     597#define YYNNTS  241
    598598/* YYNRULES -- Number of rules.  */
    599 #define YYNRULES  754
     599#define YYNRULES  755
    600600/* YYNRULES -- Number of states.  */
    601 #define YYNSTATES  1581
     601#define YYNSTATES  1580
    602602
    603603/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    614614       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    615615       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    616        2,     2,     2,   118,     2,     2,     2,   125,   120,     2,
    617      109,   110,   119,   121,   116,   122,   113,   124,     2,     2,
     616       2,     2,     2,   122,     2,     2,     2,   125,   119,     2,
     617     109,   110,   118,   120,   116,   121,   113,   124,     2,     2,
    618618       2,     2,     2,     2,     2,     2,     2,     2,   117,   132,
    619619     126,   131,   127,   130,     2,     2,     2,     2,     2,     2,
     
    660660      87,    90,    98,   103,   105,   109,   110,   112,   116,   124,
    661661     134,   136,   140,   142,   146,   154,   158,   166,   168,   170,
    662      172,   175,   178,   181,   184,   187,   190,   193,   198,   205,
    663      207,   212,   217,   220,   225,   228,   230,   232,   234,   236,
    664      238,   243,   248,   250,   254,   258,   262,   264,   268,   272,
    665      274,   278,   282,   284,   288,   292,   296,   300,   302,   306,
    666      310,   312,   316,   318,   322,   324,   328,   330,   334,   336,
    667      340,   342,   348,   353,   359,   361,   363,   367,   371,   374,
    668      375,   377,   380,   386,   393,   401,   403,   407,   409,   411,
    669      413,   415,   417,   419,   421,   423,   425,   427,   429,   433,
    670      434,   436,   438,   440,   442,   444,   446,   448,   450,   452,
    671      459,   464,   467,   475,   477,   481,   483,   486,   488,   491,
    672      493,   496,   499,   505,   513,   519,   529,   535,   545,   547,
    673      551,   553,   555,   559,   563,   566,   568,   571,   574,   575,
    674      577,   580,   584,   585,   587,   590,   594,   598,   603,   604,
    675      606,   608,   611,   617,   625,   632,   639,   644,   648,   653,
    676      656,   660,   663,   667,   671,   675,   679,   685,   689,   693,
    677      698,   700,   706,   713,   719,   726,   736,   747,   757,   768,
    678      771,   773,   776,   779,   782,   784,   791,   800,   811,   824,
    679      839,   840,   842,   843,   845,   847,   851,   856,   864,   865,
    680      867,   871,   873,   877,   879,   881,   883,   887,   889,   891,
    681      893,   897,   898,   900,   904,   909,   911,   915,   917,   919,
    682      923,   927,   931,   935,   939,   942,   946,   953,   957,   961,
    683      966,   968,   971,   974,   978,   984,   993,  1001,  1009,  1015,
    684     1025,  1028,  1031,  1037,  1041,  1047,  1052,  1056,  1061,  1066,
    685     1074,  1078,  1082,  1086,  1090,  1095,  1102,  1104,  1106,  1108,
    686     1110,  1112,  1114,  1116,  1118,  1119,  1121,  1123,  1126,  1128,
    687     1130,  1132,  1134,  1136,  1138,  1140,  1141,  1147,  1149,  1152,
    688     1156,  1158,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
    689     1177,  1179,  1181,  1183,  1185,  1187,  1189,  1191,  1193,  1195,
    690     1197,  1199,  1201,  1203,  1205,  1207,  1210,  1213,  1217,  1221,
    691     1223,  1227,  1229,  1232,  1235,  1238,  1243,  1248,  1253,  1258,
    692     1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,  1283,  1286,
    693     1290,  1292,  1295,  1298,  1300,  1302,  1307,  1310,  1311,  1318,
    694     1326,  1329,  1332,  1335,  1337,  1340,  1343,  1347,  1350,  1354,
    695     1356,  1359,  1363,  1366,  1369,  1374,  1375,  1377,  1380,  1383,
    696     1385,  1386,  1388,  1391,  1394,  1400,  1403,  1404,  1412,  1415,
    697     1420,  1421,  1424,  1425,  1427,  1429,  1431,  1437,  1443,  1449,
    698     1451,  1457,  1463,  1473,  1475,  1481,  1482,  1484,  1486,  1492,
    699     1494,  1496,  1502,  1508,  1510,  1514,  1518,  1523,  1525,  1527,
    700     1529,  1531,  1534,  1536,  1540,  1544,  1546,  1549,  1551,  1555,
    701     1557,  1559,  1561,  1563,  1565,  1567,  1569,  1571,  1573,  1575,
    702     1577,  1580,  1582,  1584,  1586,  1589,  1590,  1593,  1596,  1598,
    703     1603,  1604,  1606,  1609,  1613,  1618,  1621,  1624,  1626,  1629,
    704     1631,  1634,  1640,  1646,  1654,  1661,  1663,  1666,  1669,  1673,
    705     1675,  1678,  1681,  1686,  1689,  1694,  1695,  1700,  1703,  1705,
    706     1707,  1709,  1710,  1713,  1719,  1725,  1739,  1741,  1743,  1747,
    707     1751,  1754,  1758,  1762,  1765,  1770,  1772,  1779,  1789,  1790,
    708     1802,  1804,  1808,  1812,  1816,  1818,  1820,  1826,  1829,  1835,
    709     1836,  1838,  1840,  1844,  1845,  1847,  1849,  1851,  1853,  1854,
    710     1861,  1864,  1866,  1869,  1874,  1877,  1881,  1885,  1889,  1894,
    711     1900,  1906,  1912,  1919,  1921,  1923,  1925,  1929,  1930,  1936,
    712     1937,  1939,  1941,  1944,  1951,  1953,  1957,  1958,  1960,  1965,
    713     1967,  1969,  1971,  1973,  1976,  1978,  1981,  1984,  1986,  1990,
    714     1993,  1997,  2001,  2004,  2009,  2014,  2018,  2027,  2031,  2034,
    715     2036,  2039,  2046,  2055,  2059,  2062,  2066,  2070,  2075,  2080,
    716     2084,  2086,  2088,  2090,  2095,  2102,  2106,  2109,  2113,  2117,
    717     2122,  2127,  2131,  2134,  2136,  2139,  2142,  2144,  2148,  2151,
    718     2155,  2159,  2162,  2167,  2172,  2176,  2183,  2192,  2196,  2199,
    719     2201,  2204,  2207,  2210,  2214,  2218,  2221,  2226,  2231,  2235,
    720     2242,  2251,  2255,  2258,  2260,  2263,  2266,  2268,  2270,  2273,
    721     2277,  2281,  2284,  2289,  2296,  2305,  2307,  2310,  2313,  2315,
    722     2318,  2321,  2325,  2329,  2331,  2336,  2341,  2345,  2351,  2360,
    723     2364,  2367,  2371,  2373,  2379,  2385,  2392,  2399,  2401,  2404,
    724     2407,  2409,  2412,  2415,  2419,  2423,  2425,  2430,  2435,  2439,
    725     2445,  2454,  2458,  2460,  2463,  2465,  2468,  2475,  2481,  2488,
    726     2496,  2504,  2506,  2509,  2512,  2514,  2517,  2520,  2524,  2528,
    727     2530,  2535,  2540,  2544,  2553,  2557,  2559,  2561,  2564,  2566,
    728     2568,  2571,  2575,  2578,  2582,  2585,  2589,  2593,  2596,  2601,
    729     2605,  2608,  2612,  2615,  2620,  2624,  2627,  2634,  2641,  2648,
    730     2656,  2658,  2661,  2663,  2665,  2667,  2670,  2674,  2677,  2681,
    731     2684,  2688,  2692,  2697,  2700,  2704,  2709,  2712,  2718,  2724,
    732     2731,  2738,  2739,  2741,  2742
     662     172,   175,   178,   181,   184,   187,   190,   195,   202,   204,
     663     209,   214,   217,   222,   224,   226,   228,   230,   232,   234,
     664     236,   238,   243,   248,   250,   254,   258,   262,   264,   268,
     665     272,   274,   278,   282,   284,   288,   292,   296,   300,   302,
     666     306,   310,   312,   316,   318,   322,   324,   328,   330,   334,
     667     336,   340,   342,   348,   353,   359,   361,   363,   367,   371,
     668     374,   375,   377,   380,   386,   393,   401,   403,   407,   409,
     669     411,   413,   415,   417,   419,   421,   423,   425,   427,   429,
     670     433,   434,   436,   438,   440,   442,   444,   446,   448,   450,
     671     452,   459,   464,   467,   475,   477,   481,   483,   486,   488,
     672     491,   493,   496,   499,   505,   513,   519,   529,   535,   545,
     673     547,   551,   553,   555,   559,   563,   566,   568,   571,   574,
     674     575,   577,   580,   584,   585,   587,   590,   594,   598,   603,
     675     604,   606,   608,   611,   617,   625,   632,   639,   644,   648,
     676     653,   656,   660,   663,   667,   671,   675,   679,   685,   689,
     677     693,   698,   700,   706,   713,   719,   726,   736,   747,   757,
     678     768,   771,   773,   776,   779,   782,   784,   791,   800,   811,
     679     824,   839,   840,   842,   843,   845,   847,   851,   856,   864,
     680     865,   867,   871,   873,   877,   879,   881,   883,   887,   889,
     681     891,   893,   897,   898,   900,   904,   909,   911,   915,   917,
     682     919,   923,   927,   931,   935,   939,   942,   946,   953,   957,
     683     961,   966,   968,   971,   974,   978,   984,   993,  1001,  1009,
     684    1015,  1025,  1028,  1031,  1037,  1041,  1047,  1052,  1056,  1061,
     685    1066,  1074,  1078,  1082,  1086,  1090,  1095,  1102,  1104,  1106,
     686    1108,  1110,  1112,  1114,  1116,  1118,  1119,  1121,  1123,  1126,
     687    1128,  1130,  1132,  1134,  1136,  1138,  1140,  1141,  1147,  1149,
     688    1152,  1156,  1158,  1161,  1163,  1165,  1167,  1169,  1171,  1173,
     689    1175,  1177,  1179,  1181,  1183,  1185,  1187,  1189,  1191,  1193,
     690    1195,  1197,  1199,  1201,  1203,  1205,  1207,  1210,  1213,  1217,
     691    1221,  1223,  1227,  1229,  1232,  1235,  1238,  1243,  1248,  1253,
     692    1258,  1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,  1283,
     693    1286,  1290,  1292,  1295,  1298,  1300,  1302,  1307,  1310,  1311,
     694    1318,  1326,  1329,  1332,  1335,  1337,  1340,  1343,  1347,  1350,
     695    1354,  1356,  1359,  1363,  1366,  1369,  1374,  1375,  1377,  1380,
     696    1383,  1385,  1386,  1388,  1391,  1394,  1400,  1403,  1404,  1412,
     697    1415,  1420,  1421,  1424,  1425,  1427,  1429,  1431,  1437,  1443,
     698    1449,  1451,  1457,  1463,  1473,  1475,  1481,  1482,  1484,  1486,
     699    1492,  1494,  1496,  1502,  1508,  1510,  1514,  1518,  1523,  1525,
     700    1527,  1529,  1531,  1534,  1536,  1540,  1544,  1546,  1549,  1551,
     701    1555,  1557,  1559,  1561,  1563,  1565,  1567,  1569,  1571,  1573,
     702    1575,  1577,  1580,  1582,  1584,  1586,  1589,  1590,  1593,  1596,
     703    1598,  1603,  1604,  1606,  1609,  1613,  1618,  1621,  1624,  1626,
     704    1629,  1631,  1634,  1640,  1646,  1654,  1661,  1663,  1666,  1669,
     705    1673,  1675,  1678,  1681,  1686,  1689,  1694,  1695,  1700,  1703,
     706    1705,  1707,  1709,  1710,  1713,  1719,  1725,  1739,  1741,  1743,
     707    1747,  1751,  1754,  1758,  1762,  1765,  1770,  1772,  1779,  1789,
     708    1790,  1802,  1804,  1808,  1812,  1816,  1818,  1820,  1826,  1829,
     709    1835,  1836,  1838,  1840,  1844,  1845,  1847,  1849,  1851,  1853,
     710    1854,  1861,  1864,  1866,  1869,  1874,  1877,  1881,  1885,  1889,
     711    1894,  1900,  1906,  1912,  1919,  1921,  1923,  1925,  1929,  1930,
     712    1936,  1937,  1939,  1941,  1944,  1951,  1953,  1957,  1958,  1960,
     713    1965,  1967,  1969,  1971,  1973,  1976,  1978,  1981,  1984,  1986,
     714    1990,  1993,  1997,  2001,  2004,  2009,  2014,  2018,  2027,  2031,
     715    2034,  2036,  2039,  2046,  2055,  2059,  2062,  2066,  2070,  2075,
     716    2080,  2084,  2086,  2088,  2090,  2095,  2102,  2106,  2109,  2113,
     717    2117,  2122,  2127,  2131,  2134,  2136,  2139,  2142,  2144,  2148,
     718    2151,  2155,  2159,  2162,  2167,  2172,  2176,  2183,  2192,  2196,
     719    2199,  2201,  2204,  2207,  2210,  2214,  2218,  2221,  2226,  2231,
     720    2235,  2242,  2251,  2255,  2258,  2260,  2263,  2266,  2268,  2270,
     721    2273,  2277,  2281,  2284,  2289,  2296,  2305,  2307,  2310,  2313,
     722    2315,  2318,  2321,  2325,  2329,  2331,  2336,  2341,  2345,  2351,
     723    2360,  2364,  2367,  2371,  2373,  2379,  2385,  2392,  2399,  2401,
     724    2404,  2407,  2409,  2412,  2415,  2419,  2423,  2425,  2430,  2435,
     725    2439,  2445,  2454,  2458,  2460,  2463,  2465,  2468,  2475,  2481,
     726    2488,  2496,  2504,  2506,  2509,  2512,  2514,  2517,  2520,  2524,
     727    2528,  2530,  2535,  2540,  2544,  2553,  2557,  2559,  2561,  2564,
     728    2566,  2568,  2571,  2575,  2578,  2582,  2585,  2589,  2593,  2596,
     729    2601,  2605,  2608,  2612,  2615,  2620,  2624,  2627,  2634,  2641,
     730    2648,  2656,  2658,  2661,  2663,  2665,  2667,  2670,  2674,  2677,
     731    2681,  2684,  2688,  2692,  2697,  2700,  2704,  2709,  2712,  2718,
     732    2724,  2731,  2738,  2739,  2741,  2742
    733733};
    734734
     
    736736static const yytype_int16 yyrhs[] =
    737737{
    738      301,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
     738     302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
    739739      -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
    740740      -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,    82,
    741       -1,   141,    82,    -1,    72,    -1,   140,    -1,   109,   168,
    742      110,    -1,   109,   172,   110,    -1,   142,    -1,   143,   111,
    743      134,   163,   135,   112,    -1,   143,   109,   144,   110,    -1,
     741      -1,   141,    82,    -1,    72,    -1,   140,    -1,   109,   169,
     742     110,    -1,   109,   173,   110,    -1,   142,    -1,   143,   111,
     743     134,   164,   135,   112,    -1,   143,   109,   144,   110,    -1,
    744744     143,   113,   139,    -1,   143,   113,   111,   134,   146,   135,
    745745     112,    -1,   143,    85,   139,    -1,   143,    85,   111,   134,
    746746     146,   135,   112,    -1,   143,    86,    -1,   143,    87,    -1,
    747      109,   274,   110,   114,   278,   371,   115,    -1,   143,   114,
     747     109,   275,   110,   114,   279,   372,   115,    -1,   143,   114,
    748748     144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -1,
    749      163,    -1,   139,   117,   163,    -1,   111,   134,   163,   135,
    750      112,   117,   163,    -1,   111,   134,   163,   116,   166,   135,
    751      112,   117,   163,    -1,   147,    -1,   146,   116,   147,    -1,
     749     164,    -1,   139,   117,   164,    -1,   111,   134,   164,   135,
     750     112,   117,   164,    -1,   111,   134,   164,   116,   167,   135,
     751     112,   117,   164,    -1,   147,    -1,   146,   116,   147,    -1,
    752752     139,    -1,   139,   113,   147,    -1,   139,   113,   111,   134,
    753753     146,   135,   112,    -1,   139,    85,   147,    -1,   139,    85,
    754754     111,   134,   146,   135,   112,    -1,   143,    -1,   136,    -1,
    755      141,    -1,    86,   148,    -1,    87,   148,    -1,    40,   150,
    756       -1,   149,   150,    -1,   118,   150,    -1,   119,   150,    -1,
    757       37,   148,    -1,    37,   109,   274,   110,    -1,    38,   109,
    758      274,   116,   139,   110,    -1,    76,    -1,    76,   109,   275,
    759      110,    -1,    76,   109,   145,   110,    -1,    66,   148,    -1,
    760       66,   109,   274,   110,    -1,    94,   139,    -1,   120,    -1,
    761      121,    -1,   122,    -1,   123,    -1,   148,    -1,   109,   274,
    762      110,   150,    -1,   109,   274,   110,   165,    -1,   150,    -1,
    763      151,   119,   150,    -1,   151,   124,   150,    -1,   151,   125,
    764      150,    -1,   151,    -1,   152,   121,   151,    -1,   152,   122,
    765      151,    -1,   152,    -1,   153,    88,   152,    -1,   153,    89,
    766      152,    -1,   153,    -1,   154,   126,   153,    -1,   154,   127,
    767      153,    -1,   154,    90,   153,    -1,   154,    91,   153,    -1,
    768      154,    -1,   155,    92,   154,    -1,   155,    93,   154,    -1,
    769      155,    -1,   156,   120,   155,    -1,   156,    -1,   157,   128,
    770      156,    -1,   157,    -1,   158,   129,   157,    -1,   158,    -1,
    771      159,    94,   158,    -1,   159,    -1,   160,    95,   159,    -1,
    772      160,    -1,   160,   130,   168,   117,   161,    -1,   160,   130,
    773      117,   161,    -1,   160,   130,   168,   117,   165,    -1,   161,
    774       -1,   161,    -1,   148,   131,   163,    -1,   148,   167,   163,
    775       -1,   165,   372,    -1,    -1,   163,    -1,   111,   112,    -1,
    776      111,   134,   163,   135,   112,    -1,   111,   134,   116,   166,
    777      135,   112,    -1,   111,   134,   163,   116,   166,   135,   112,
    778       -1,   164,    -1,   166,   116,   164,    -1,    97,    -1,    98,
     755     141,    -1,    40,   151,    -1,   149,   151,    -1,   150,   151,
     756      -1,    86,   148,    -1,    87,   148,    -1,    37,   148,    -1,
     757      37,   109,   275,   110,    -1,    38,   109,   275,   116,   139,
     758     110,    -1,    76,    -1,    76,   109,   276,   110,    -1,    76,
     759     109,   145,   110,    -1,    66,   148,    -1,    66,   109,   275,
     760     110,    -1,   118,    -1,   119,    -1,    94,    -1,   120,    -1,
     761     121,    -1,   122,    -1,   123,    -1,   148,    -1,   109,   275,
     762     110,   151,    -1,   109,   275,   110,   166,    -1,   151,    -1,
     763     152,   118,   151,    -1,   152,   124,   151,    -1,   152,   125,
     764     151,    -1,   152,    -1,   153,   120,   152,    -1,   153,   121,
     765     152,    -1,   153,    -1,   154,    88,   153,    -1,   154,    89,
     766     153,    -1,   154,    -1,   155,   126,   154,    -1,   155,   127,
     767     154,    -1,   155,    90,   154,    -1,   155,    91,   154,    -1,
     768     155,    -1,   156,    92,   155,    -1,   156,    93,   155,    -1,
     769     156,    -1,   157,   119,   156,    -1,   157,    -1,   158,   128,
     770     157,    -1,   158,    -1,   159,   129,   158,    -1,   159,    -1,
     771     160,    94,   159,    -1,   160,    -1,   161,    95,   160,    -1,
     772     161,    -1,   161,   130,   169,   117,   162,    -1,   161,   130,
     773     117,   162,    -1,   161,   130,   169,   117,   166,    -1,   162,
     774      -1,   162,    -1,   148,   131,   164,    -1,   148,   168,   164,
     775      -1,   166,   373,    -1,    -1,   164,    -1,   111,   112,    -1,
     776     111,   134,   164,   135,   112,    -1,   111,   134,   116,   167,
     777     135,   112,    -1,   111,   134,   164,   116,   167,   135,   112,
     778      -1,   165,    -1,   167,   116,   165,    -1,    97,    -1,    98,
    779779      -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,   103,
    780       -1,   104,    -1,   105,    -1,   106,    -1,   163,    -1,   168,
    781      116,   163,    -1,    -1,   168,    -1,   171,    -1,   172,    -1,
    782      176,    -1,   177,    -1,   189,    -1,   191,    -1,   192,    -1,
    783      197,    -1,   128,   143,   114,   144,   115,   132,    -1,   139,
    784      117,   311,   170,    -1,   114,   115,    -1,   114,   134,   134,
    785      208,   173,   135,   115,    -1,   174,    -1,   173,   134,   174,
    786       -1,   211,    -1,    40,   211,    -1,   307,    -1,   170,   135,
    787       -1,   170,    -1,   175,   170,    -1,   169,   132,    -1,    41,
    788      109,   168,   110,   170,    -1,    41,   109,   168,   110,   170,
    789       42,   170,    -1,    43,   109,   168,   110,   182,    -1,    43,
    790      109,   168,   110,   114,   134,   204,   183,   115,    -1,    53,
    791      109,   168,   110,   182,    -1,    53,   109,   168,   110,   114,
    792      134,   204,   185,   115,    -1,   162,    -1,   162,    96,   162,
    793       -1,   309,    -1,   178,    -1,   179,   116,   178,    -1,    44,
    794      179,   117,    -1,    45,   117,    -1,   180,    -1,   181,   180,
    795       -1,   181,   170,    -1,    -1,   184,    -1,   181,   175,    -1,
    796      184,   181,   175,    -1,    -1,   186,    -1,   181,   188,    -1,
    797      181,   175,   187,    -1,   186,   181,   188,    -1,   186,   181,
    798      175,   187,    -1,    -1,   188,    -1,    56,    -1,    56,   132,
    799       -1,    47,   109,   168,   110,   170,    -1,    46,   170,    47,
    800      109,   168,   110,   132,    -1,    48,   109,   134,   190,   110,
    801      170,    -1,   169,   135,   132,   169,   132,   169,    -1,   211,
    802      169,   132,   169,    -1,    51,   139,   132,    -1,    51,   119,
    803      168,   132,    -1,    50,   132,    -1,    50,   139,   132,    -1,
    804       49,   132,    -1,    49,   139,   132,    -1,    52,   169,   132,
    805       -1,    61,   164,   132,    -1,    62,   164,   132,    -1,    62,
    806      164,    63,   163,   132,    -1,    57,   172,   193,    -1,    57,
    807      172,   195,    -1,    57,   172,   193,   195,    -1,   194,    -1,
    808       58,   109,    96,   110,   172,    -1,   194,    58,   109,    96,
    809      110,   172,    -1,    59,   109,    96,   110,   172,    -1,   194,
    810       59,   109,    96,   110,   172,    -1,    58,   109,   134,   134,
    811      196,   135,   110,   172,   135,    -1,   194,    58,   109,   134,
    812      134,   196,   135,   110,   172,   135,    -1,    59,   109,   134,
    813      134,   196,   135,   110,   172,   135,    -1,   194,    59,   109,
    814      134,   134,   196,   135,   110,   172,   135,    -1,    60,   172,
    815       -1,   224,    -1,   224,   308,    -1,   224,   356,    -1,   365,
    816      139,    -1,   365,    -1,    64,   198,   109,   141,   110,   132,
    817       -1,    64,   198,   109,   141,   117,   199,   110,   132,    -1,
    818       64,   198,   109,   141,   117,   199,   117,   199,   110,   132,
    819       -1,    64,   198,   109,   141,   117,   199,   117,   199,   117,
    820      202,   110,   132,    -1,    64,   198,    51,   109,   141,   117,
    821      117,   199,   117,   202,   117,   203,   110,   132,    -1,    -1,
    822       11,    -1,    -1,   200,    -1,   201,    -1,   200,   116,   201,
    823       -1,   141,   109,   162,   110,    -1,   111,   162,   112,   141,
    824      109,   162,   110,    -1,    -1,   141,    -1,   202,   116,   141,
    825       -1,   139,    -1,   203,   116,   139,    -1,   135,    -1,   205,
    826       -1,   211,    -1,   205,   134,   211,    -1,   135,    -1,   207,
    827       -1,   221,    -1,   207,   134,   221,    -1,    -1,   209,    -1,
    828       29,   210,   132,    -1,   209,    29,   210,   132,    -1,   273,
    829       -1,   210,   116,   273,    -1,   212,    -1,   221,    -1,   213,
    830      135,   132,    -1,   218,   135,   132,    -1,   215,   135,   132,
    831       -1,   292,   135,   132,    -1,   295,   135,   132,    -1,   214,
    832      276,    -1,   230,   214,   276,    -1,   213,   135,   116,   134,
    833      271,   276,    -1,   366,   271,   310,    -1,   369,   271,   310,
    834       -1,   226,   369,   271,   310,    -1,   216,    -1,   226,   216,
    835       -1,   230,   216,    -1,   230,   226,   216,    -1,   215,   135,
    836      116,   134,   271,    -1,   111,   112,   271,   109,   134,   259,
    837      135,   110,    -1,   369,   271,   109,   134,   259,   135,   110,
    838       -1,   217,   271,   109,   134,   259,   135,   110,    -1,   111,
    839      134,   261,   135,   112,    -1,   111,   134,   261,   135,   116,
    840      134,   262,   135,   112,    -1,     3,   214,    -1,     3,   216,
    841       -1,   218,   135,   116,   134,   139,    -1,     3,   224,   308,
    842       -1,   219,   135,   116,   134,   308,    -1,   226,     3,   224,
    843      308,    -1,   224,     3,   308,    -1,   224,     3,   226,   308,
    844       -1,     3,   139,   131,   163,    -1,   220,   135,   116,   134,
    845      139,   131,   163,    -1,   222,   135,   132,    -1,   219,   135,
    846      132,    -1,   220,   135,   132,    -1,   239,   135,   132,    -1,
    847      223,   308,   310,   276,    -1,   222,   116,   311,   308,   310,
    848      276,    -1,   235,    -1,   239,    -1,   241,    -1,   282,    -1,
    849      236,    -1,   240,    -1,   242,    -1,   283,    -1,    -1,   226,
    850       -1,   227,    -1,   226,   227,    -1,   228,    -1,   313,    -1,
     780      -1,   104,    -1,   105,    -1,   106,    -1,   164,    -1,   169,
     781     116,   164,    -1,    -1,   169,    -1,   172,    -1,   173,    -1,
     782     177,    -1,   178,    -1,   190,    -1,   192,    -1,   193,    -1,
     783     198,    -1,   128,   143,   114,   144,   115,   132,    -1,    72,
     784     117,   312,   171,    -1,   114,   115,    -1,   114,   134,   134,
     785     209,   174,   135,   115,    -1,   175,    -1,   174,   134,   175,
     786      -1,   212,    -1,    40,   212,    -1,   308,    -1,   171,   135,
     787      -1,   171,    -1,   176,   171,    -1,   170,   132,    -1,    41,
     788     109,   169,   110,   171,    -1,    41,   109,   169,   110,   171,
     789      42,   171,    -1,    43,   109,   169,   110,   183,    -1,    43,
     790     109,   169,   110,   114,   134,   205,   184,   115,    -1,    53,
     791     109,   169,   110,   183,    -1,    53,   109,   169,   110,   114,
     792     134,   205,   186,   115,    -1,   163,    -1,   163,    96,   163,
     793      -1,   310,    -1,   179,    -1,   180,   116,   179,    -1,    44,
     794     180,   117,    -1,    45,   117,    -1,   181,    -1,   182,   181,
     795      -1,   182,   171,    -1,    -1,   185,    -1,   182,   176,    -1,
     796     185,   182,   176,    -1,    -1,   187,    -1,   182,   189,    -1,
     797     182,   176,   188,    -1,   187,   182,   189,    -1,   187,   182,
     798     176,   188,    -1,    -1,   189,    -1,    56,    -1,    56,   132,
     799      -1,    47,   109,   169,   110,   171,    -1,    46,   171,    47,
     800     109,   169,   110,   132,    -1,    48,   109,   134,   191,   110,
     801     171,    -1,   170,   135,   132,   170,   132,   170,    -1,   212,
     802     170,   132,   170,    -1,    51,    72,   132,    -1,    51,   118,
     803     169,   132,    -1,    50,   132,    -1,    50,    72,   132,    -1,
     804      49,   132,    -1,    49,    72,   132,    -1,    52,   170,   132,
     805      -1,    61,   165,   132,    -1,    62,   165,   132,    -1,    62,
     806     165,    63,   164,   132,    -1,    57,   173,   194,    -1,    57,
     807     173,   196,    -1,    57,   173,   194,   196,    -1,   195,    -1,
     808      58,   109,    96,   110,   173,    -1,   195,    58,   109,    96,
     809     110,   173,    -1,    59,   109,    96,   110,   173,    -1,   195,
     810      59,   109,    96,   110,   173,    -1,    58,   109,   134,   134,
     811     197,   135,   110,   173,   135,    -1,   195,    58,   109,   134,
     812     134,   197,   135,   110,   173,   135,    -1,    59,   109,   134,
     813     134,   197,   135,   110,   173,   135,    -1,   195,    59,   109,
     814     134,   134,   197,   135,   110,   173,   135,    -1,    60,   173,
     815      -1,   225,    -1,   225,   309,    -1,   225,   357,    -1,   366,
     816     139,    -1,   366,    -1,    64,   199,   109,   141,   110,   132,
     817      -1,    64,   199,   109,   141,   117,   200,   110,   132,    -1,
     818      64,   199,   109,   141,   117,   200,   117,   200,   110,   132,
     819      -1,    64,   199,   109,   141,   117,   200,   117,   200,   117,
     820     203,   110,   132,    -1,    64,   199,    51,   109,   141,   117,
     821     117,   200,   117,   203,   117,   204,   110,   132,    -1,    -1,
     822      11,    -1,    -1,   201,    -1,   202,    -1,   201,   116,   202,
     823      -1,   141,   109,   163,   110,    -1,   111,   163,   112,   141,
     824     109,   163,   110,    -1,    -1,   141,    -1,   203,   116,   141,
     825      -1,   139,    -1,   204,   116,   139,    -1,   135,    -1,   206,
     826      -1,   212,    -1,   206,   134,   212,    -1,   135,    -1,   208,
     827      -1,   222,    -1,   208,   134,   222,    -1,    -1,   210,    -1,
     828      29,   211,   132,    -1,   210,    29,   211,   132,    -1,   274,
     829      -1,   211,   116,   274,    -1,   213,    -1,   222,    -1,   214,
     830     135,   132,    -1,   219,   135,   132,    -1,   216,   135,   132,
     831      -1,   293,   135,   132,    -1,   296,   135,   132,    -1,   215,
     832     277,    -1,   231,   215,   277,    -1,   214,   135,   116,   134,
     833     272,   277,    -1,   367,   272,   311,    -1,   370,   272,   311,
     834      -1,   227,   370,   272,   311,    -1,   217,    -1,   227,   217,
     835      -1,   231,   217,    -1,   231,   227,   217,    -1,   216,   135,
     836     116,   134,   272,    -1,   111,   112,   272,   109,   134,   260,
     837     135,   110,    -1,   370,   272,   109,   134,   260,   135,   110,
     838      -1,   218,   272,   109,   134,   260,   135,   110,    -1,   111,
     839     134,   262,   135,   112,    -1,   111,   134,   262,   135,   116,
     840     134,   263,   135,   112,    -1,     3,   215,    -1,     3,   217,
     841      -1,   219,   135,   116,   134,   139,    -1,     3,   225,   309,
     842      -1,   220,   135,   116,   134,   309,    -1,   227,     3,   225,
     843     309,    -1,   225,     3,   309,    -1,   225,     3,   227,   309,
     844      -1,     3,   139,   131,   164,    -1,   221,   135,   116,   134,
     845     139,   131,   164,    -1,   223,   135,   132,    -1,   220,   135,
     846     132,    -1,   221,   135,   132,    -1,   240,   135,   132,    -1,
     847     224,   309,   311,   277,    -1,   223,   116,   312,   309,   311,
     848     277,    -1,   236,    -1,   240,    -1,   242,    -1,   283,    -1,
     849     237,    -1,   241,    -1,   243,    -1,   284,    -1,    -1,   227,
     850      -1,   228,    -1,   227,   228,    -1,   229,    -1,   314,    -1,
    851851      10,    -1,    12,    -1,    11,    -1,    14,    -1,    67,    -1,
    852       -1,    13,   109,   229,   285,   110,    -1,   231,    -1,   226,
    853      231,    -1,   230,   226,   231,    -1,   232,    -1,   231,   232,
    854       -1,   233,    -1,     5,    -1,     7,    -1,     4,    -1,     6,
     852      -1,    13,   109,   230,   286,   110,    -1,   232,    -1,   227,
     853     232,    -1,   231,   227,   232,    -1,   233,    -1,   232,   233,
     854      -1,   234,    -1,     5,    -1,     7,    -1,     4,    -1,     6,
    855855      -1,     8,    -1,     9,    -1,    69,    -1,    71,    -1,    16,
    856856      -1,    21,    -1,    20,    -1,    18,    -1,    19,    -1,    17,
    857857      -1,    22,    -1,    23,    -1,    15,    -1,    25,    -1,    26,
    858       -1,    27,    -1,    24,    -1,   236,    -1,   230,   236,    -1,
    859      235,   232,    -1,   235,   232,   226,    -1,   235,   232,   236,
    860       -1,   237,    -1,   225,   238,   225,    -1,   234,    -1,   226,
    861      234,    -1,   237,   227,    -1,   237,   234,    -1,    28,   109,
    862      275,   110,    -1,    28,   109,   168,   110,    -1,    78,   109,
    863      275,   110,    -1,    78,   109,   168,   110,    -1,   240,    -1,
    864      230,   240,    -1,   239,   232,    -1,   239,   232,   226,    -1,
    865      243,    -1,   226,   243,    -1,   240,   227,    -1,   242,    -1,
    866      230,   242,    -1,   241,   232,    -1,   241,   232,   226,    -1,
    867       74,    -1,   226,    74,    -1,   242,   227,    -1,   244,    -1,
    868      255,    -1,   246,   114,   247,   115,    -1,   246,   273,    -1,
    869       -1,   246,   273,   245,   114,   247,   115,    -1,   246,   109,
    870      291,   110,   114,   247,   115,    -1,   246,   284,    -1,    31,
    871      311,    -1,    32,   311,    -1,   248,    -1,   247,   248,    -1,
    872      249,   132,    -1,    40,   249,   132,    -1,   250,   132,    -1,
    873       40,   250,   132,    -1,   365,    -1,   365,   273,    -1,   249,
    874      116,   273,    -1,   249,   116,    -1,   224,   251,    -1,   250,
    875      116,   311,   251,    -1,    -1,   253,    -1,   317,   252,    -1,
    876      330,   252,    -1,   356,    -1,    -1,   253,    -1,   117,   162,
    877       -1,    30,   311,    -1,   254,   114,   257,   371,   115,    -1,
    878      254,   273,    -1,    -1,   254,   273,   256,   114,   257,   371,
    879      115,    -1,   273,   258,    -1,   257,   116,   273,   258,    -1,
    880       -1,   131,   162,    -1,    -1,   260,    -1,   262,    -1,   261,
    881       -1,   261,   135,   116,   134,   262,    -1,   262,   135,   116,
    882      134,    96,    -1,   261,   135,   116,   134,    96,    -1,   266,
    883       -1,   262,   135,   116,   134,   266,    -1,   261,   135,   116,
    884      134,   266,    -1,   261,   135,   116,   134,   262,   135,   116,
    885      134,   266,    -1,   267,    -1,   262,   135,   116,   134,   267,
    886       -1,    -1,   264,    -1,   265,    -1,   265,   135,   116,   134,
    887       96,    -1,   269,    -1,   268,    -1,   265,   135,   116,   134,
    888      269,    -1,   265,   135,   116,   134,   268,    -1,   268,    -1,
    889      361,   271,   372,    -1,   369,   271,   372,    -1,   226,   369,
    890      271,   372,    -1,   216,    -1,   269,    -1,   361,    -1,   369,
    891       -1,   226,   369,    -1,   370,    -1,   223,   335,   372,    -1,
    892      223,   339,   372,    -1,   223,    -1,   223,   350,    -1,   139,
    893       -1,   270,   116,   139,    -1,   137,    -1,    74,    -1,    75,
     858      -1,    27,    -1,    24,    -1,   237,    -1,   231,   237,    -1,
     859     236,   233,    -1,   236,   233,   227,    -1,   236,   233,   237,
     860      -1,   238,    -1,   226,   239,   226,    -1,   235,    -1,   227,
     861     235,    -1,   238,   228,    -1,   238,   235,    -1,    28,   109,
     862     276,   110,    -1,    28,   109,   169,   110,    -1,    78,   109,
     863     276,   110,    -1,    78,   109,   169,   110,    -1,   241,    -1,
     864     231,   241,    -1,   240,   233,    -1,   240,   233,   227,    -1,
     865     244,    -1,   227,   244,    -1,   241,   228,    -1,   243,    -1,
     866     231,   243,    -1,   242,   233,    -1,   242,   233,   227,    -1,
     867      74,    -1,   227,    74,    -1,   243,   228,    -1,   245,    -1,
     868     256,    -1,   247,   114,   248,   115,    -1,   247,   274,    -1,
     869      -1,   247,   274,   246,   114,   248,   115,    -1,   247,   109,
     870     292,   110,   114,   248,   115,    -1,   247,   285,    -1,    31,
     871     312,    -1,    32,   312,    -1,   249,    -1,   248,   249,    -1,
     872     250,   132,    -1,    40,   250,   132,    -1,   251,   132,    -1,
     873      40,   251,   132,    -1,   366,    -1,   366,   274,    -1,   250,
     874     116,   274,    -1,   250,   116,    -1,   225,   252,    -1,   251,
     875     116,   312,   252,    -1,    -1,   254,    -1,   318,   253,    -1,
     876     331,   253,    -1,   357,    -1,    -1,   254,    -1,   117,   163,
     877      -1,    30,   312,    -1,   255,   114,   258,   372,   115,    -1,
     878     255,   274,    -1,    -1,   255,   274,   257,   114,   258,   372,
     879     115,    -1,   274,   259,    -1,   258,   116,   274,   259,    -1,
     880      -1,   131,   163,    -1,    -1,   261,    -1,   263,    -1,   262,
     881      -1,   262,   135,   116,   134,   263,    -1,   263,   135,   116,
     882     134,    96,    -1,   262,   135,   116,   134,    96,    -1,   267,
     883      -1,   263,   135,   116,   134,   267,    -1,   262,   135,   116,
     884     134,   267,    -1,   262,   135,   116,   134,   263,   135,   116,
     885     134,   267,    -1,   268,    -1,   263,   135,   116,   134,   268,
     886      -1,    -1,   265,    -1,   266,    -1,   266,   135,   116,   134,
     887      96,    -1,   270,    -1,   269,    -1,   266,   135,   116,   134,
     888     270,    -1,   266,   135,   116,   134,   269,    -1,   269,    -1,
     889     362,   272,   373,    -1,   370,   272,   373,    -1,   227,   370,
     890     272,   373,    -1,   217,    -1,   270,    -1,   362,    -1,   370,
     891      -1,   227,   370,    -1,   371,    -1,   224,   336,   373,    -1,
     892     224,   340,   373,    -1,   224,    -1,   224,   351,    -1,   139,
     893      -1,   271,   116,   139,    -1,   137,    -1,    74,    -1,    75,
    894894      -1,   138,    -1,    74,    -1,    75,    -1,   139,    -1,    74,
    895       -1,    75,    -1,   365,    -1,   224,    -1,   224,   356,    -1,
    896      365,    -1,   370,    -1,   224,    -1,   224,   344,    -1,    -1,
    897      131,   277,    -1,   107,   277,    -1,   163,    -1,   114,   278,
    898      371,   115,    -1,    -1,   277,    -1,   279,   277,    -1,   278,
    899      116,   277,    -1,   278,   116,   279,   277,    -1,   280,   117,
    900       -1,   273,   117,    -1,   281,    -1,   280,   281,    -1,    80,
    901       -1,   113,   273,    -1,   111,   134,   163,   135,   112,    -1,
    902      111,   134,   309,   135,   112,    -1,   111,   134,   162,    96,
    903      162,   135,   112,    -1,   113,   111,   134,   146,   135,   112,
    904       -1,   283,    -1,   230,   283,    -1,   282,   232,    -1,   282,
    905      232,   226,    -1,   284,    -1,   226,   284,    -1,   283,   227,
    906       -1,    75,   109,   291,   110,    -1,   286,   372,    -1,   285,
    907      116,   286,   372,    -1,    -1,   288,   273,   287,   289,    -1,
    908      224,   335,    -1,    33,    -1,    35,    -1,    34,    -1,    -1,
    909      289,   290,    -1,   129,   273,   109,   291,   110,    -1,   129,
    910      114,   134,   297,   115,    -1,   129,   109,   134,   285,   135,
    911      110,   114,   134,   297,   115,   109,   291,   110,    -1,   275,
    912       -1,   163,    -1,   291,   116,   275,    -1,   291,   116,   163,
    913       -1,    33,   293,    -1,   231,    33,   293,    -1,   292,   116,
    914      293,    -1,   294,   289,    -1,   294,   289,   131,   275,    -1,
    915      273,    -1,   272,   109,   134,   285,   135,   110,    -1,    36,
    916      273,   109,   134,   285,   135,   110,   114,   115,    -1,    -1,
    917       36,   273,   109,   134,   285,   135,   110,   114,   296,   297,
    918      115,    -1,   298,    -1,   297,   134,   298,    -1,   299,   135,
    919      132,    -1,   300,   135,   132,    -1,   214,    -1,   216,    -1,
    920      299,   135,   116,   134,   271,    -1,   224,   308,    -1,   300,
    921      135,   116,   134,   308,    -1,    -1,   302,    -1,   304,    -1,
    922      302,   134,   304,    -1,    -1,   302,    -1,   211,    -1,   306,
    923       -1,   197,    -1,    -1,     5,    82,   305,   114,   303,   115,
    924       -1,    40,   304,    -1,   307,    -1,   322,   172,    -1,   326,
    925      134,   206,   172,    -1,   215,   172,    -1,   223,   322,   172,
    926       -1,   226,   322,   172,    -1,   230,   322,   172,    -1,   230,
    927      226,   322,   172,    -1,   223,   326,   134,   206,   172,    -1,
    928      226,   326,   134,   206,   172,    -1,   230,   326,   134,   206,
    929      172,    -1,   230,   226,   326,   134,   206,   172,    -1,   317,
    930       -1,   322,    -1,   330,    -1,   162,   123,   162,    -1,    -1,
    931       64,   109,   141,   110,   311,    -1,    -1,   312,    -1,   313,
    932       -1,   312,   313,    -1,    39,   109,   109,   314,   110,   110,
    933       -1,   315,    -1,   314,   116,   315,    -1,    -1,   316,    -1,
    934      316,   109,   169,   110,    -1,   271,    -1,   233,    -1,   234,
    935       -1,   227,    -1,   318,   311,    -1,   319,    -1,   320,   311,
    936       -1,   321,   311,    -1,   137,    -1,   109,   318,   110,    -1,
    937      119,   317,    -1,   119,   226,   317,    -1,   109,   319,   110,
    938       -1,   318,   348,    -1,   109,   319,   110,   348,    -1,   109,
    939      320,   110,   349,    -1,   109,   320,   110,    -1,   109,   319,
    940      110,   109,   134,   263,   135,   110,    -1,   109,   321,   110,
    941       -1,   323,   311,    -1,   324,    -1,   325,   311,    -1,   318,
    942      109,   134,   263,   135,   110,    -1,   109,   324,   110,   109,
    943      134,   263,   135,   110,    -1,   109,   323,   110,    -1,   119,
    944      322,    -1,   119,   226,   322,    -1,   109,   324,   110,    -1,
    945      109,   324,   110,   348,    -1,   109,   325,   110,   349,    -1,
    946      109,   325,   110,    -1,   327,    -1,   328,    -1,   329,    -1,
    947      318,   109,   270,   110,    -1,   109,   328,   110,   109,   270,
    948      110,    -1,   109,   327,   110,    -1,   119,   326,    -1,   119,
    949      226,   326,    -1,   109,   328,   110,    -1,   109,   328,   110,
    950      348,    -1,   109,   329,   110,   349,    -1,   109,   329,   110,
    951       -1,   331,   311,    -1,   332,    -1,   333,   311,    -1,   334,
    952      311,    -1,   340,    -1,   109,   331,   110,    -1,   119,   330,
    953       -1,   119,   226,   330,    -1,   109,   332,   110,    -1,   331,
    954      348,    -1,   109,   332,   110,   348,    -1,   109,   333,   110,
    955      349,    -1,   109,   333,   110,    -1,   331,   109,   134,   263,
    956      135,   110,    -1,   109,   332,   110,   109,   134,   263,   135,
    957      110,    -1,   109,   334,   110,    -1,   318,   311,    -1,   336,
    958       -1,   337,   311,    -1,   338,   311,    -1,   119,   335,    -1,
    959      119,   226,   335,    -1,   109,   336,   110,    -1,   318,   354,
    960       -1,   109,   336,   110,   348,    -1,   109,   337,   110,   349,
    961       -1,   109,   337,   110,    -1,   318,   109,   134,   263,   135,
    962      110,    -1,   109,   336,   110,   109,   134,   263,   135,   110,
    963       -1,   109,   338,   110,    -1,   340,   311,    -1,   341,    -1,
    964      342,   311,    -1,   343,   311,    -1,    74,    -1,    75,    -1,
    965      119,   339,    -1,   119,   226,   339,    -1,   109,   341,   110,
    966       -1,   340,   354,    -1,   109,   341,   110,   354,    -1,   340,
    967      109,   134,   263,   135,   110,    -1,   109,   341,   110,   109,
    968      134,   263,   135,   110,    -1,   345,    -1,   346,   311,    -1,
    969      347,   311,    -1,   119,    -1,   119,   226,    -1,   119,   344,
    970       -1,   119,   226,   344,    -1,   109,   345,   110,    -1,   348,
    971       -1,   109,   345,   110,   348,    -1,   109,   346,   110,   349,
    972       -1,   109,   346,   110,    -1,   109,   134,   263,   135,   110,
    973       -1,   109,   345,   110,   109,   134,   263,   135,   110,    -1,
    974      109,   347,   110,    -1,   111,   112,    -1,   111,   112,   349,
    975       -1,   349,    -1,   111,   134,   163,   135,   112,    -1,   111,
    976      134,   119,   135,   112,    -1,   349,   111,   134,   163,   135,
    977      112,    -1,   349,   111,   134,   119,   135,   112,    -1,   351,
    978       -1,   352,   311,    -1,   353,   311,    -1,   119,    -1,   119,
    979      226,    -1,   119,   350,    -1,   119,   226,   350,    -1,   109,
    980      351,   110,    -1,   354,    -1,   109,   351,   110,   354,    -1,
    981      109,   352,   110,   349,    -1,   109,   352,   110,    -1,   109,
    982      134,   263,   135,   110,    -1,   109,   351,   110,   109,   134,
    983      263,   135,   110,    -1,   109,   353,   110,    -1,   355,    -1,
    984      355,   349,    -1,   349,    -1,   111,   112,    -1,   111,   134,
    985      226,   119,   135,   112,    -1,   111,   134,   226,   135,   112,
    986       -1,   111,   134,   226,   163,   135,   112,    -1,   111,   134,
    987        7,   225,   163,   135,   112,    -1,   111,   134,   226,     7,
    988      163,   135,   112,    -1,   357,    -1,   358,   311,    -1,   359,
    989      311,    -1,   119,    -1,   119,   226,    -1,   119,   356,    -1,
    990      119,   226,   356,    -1,   109,   357,   110,    -1,   348,    -1,
    991      109,   357,   110,   348,    -1,   109,   358,   110,   349,    -1,
    992      109,   358,   110,    -1,   109,   357,   110,   109,   134,   263,
    993      135,   110,    -1,   109,   359,   110,    -1,   361,    -1,   369,
    994       -1,   226,   369,    -1,   362,    -1,   363,    -1,   119,   224,
    995       -1,   226,   119,   224,    -1,   119,   370,    -1,   226,   119,
    996      370,    -1,   119,   360,    -1,   226,   119,   360,    -1,   111,
    997      112,   224,    -1,   364,   224,    -1,   111,   112,   349,   224,
    998       -1,   364,   349,   224,    -1,   349,   224,    -1,   111,   112,
    999      362,    -1,   364,   362,    -1,   111,   112,   349,   362,    -1,
    1000      364,   349,   362,    -1,   349,   362,    -1,   111,   134,   226,
    1001      119,   135,   112,    -1,   111,   134,   226,   163,   135,   112,
    1002       -1,   111,   134,   230,   163,   135,   112,    -1,   111,   134,
    1003      230,   226,   163,   135,   112,    -1,   369,    -1,   226,   369,
    1004       -1,   366,    -1,   367,    -1,   368,    -1,   119,   224,    -1,
    1005      226,   119,   224,    -1,   119,   370,    -1,   226,   119,   370,
    1006       -1,   119,   365,    -1,   226,   119,   365,    -1,   111,   112,
    1007      224,    -1,   111,   112,   349,   224,    -1,   349,   224,    -1,
    1008      111,   112,   367,    -1,   111,   112,   349,   367,    -1,   349,
    1009      367,    -1,   111,   134,   262,   135,   112,    -1,   111,   112,
    1010      109,   259,   110,    -1,   369,   109,   134,   259,   135,   110,
    1011       -1,   217,   109,   134,   259,   135,   110,    -1,    -1,   116,
    1012       -1,    -1,   131,   163,    -1
     895      -1,    75,    -1,   366,    -1,   225,    -1,   225,   357,    -1,
     896     366,    -1,   371,    -1,   225,    -1,   225,   345,    -1,    -1,
     897     131,   278,    -1,   107,   278,    -1,   164,    -1,   114,   279,
     898     372,   115,    -1,    -1,   278,    -1,   280,   278,    -1,   279,
     899     116,   278,    -1,   279,   116,   280,   278,    -1,   281,   117,
     900      -1,   274,   117,    -1,   282,    -1,   281,   282,    -1,    80,
     901      -1,   113,   274,    -1,   111,   134,   164,   135,   112,    -1,
     902     111,   134,   310,   135,   112,    -1,   111,   134,   163,    96,
     903     163,   135,   112,    -1,   113,   111,   134,   146,   135,   112,
     904      -1,   284,    -1,   231,   284,    -1,   283,   233,    -1,   283,
     905     233,   227,    -1,   285,    -1,   227,   285,    -1,   284,   228,
     906      -1,    75,   109,   292,   110,    -1,   287,   373,    -1,   286,
     907     116,   287,   373,    -1,    -1,   289,   274,   288,   290,    -1,
     908     225,   336,    -1,    33,    -1,    35,    -1,    34,    -1,    -1,
     909     290,   291,    -1,   129,   274,   109,   292,   110,    -1,   129,
     910     114,   134,   298,   115,    -1,   129,   109,   134,   286,   135,
     911     110,   114,   134,   298,   115,   109,   292,   110,    -1,   276,
     912      -1,   164,    -1,   292,   116,   276,    -1,   292,   116,   164,
     913      -1,    33,   294,    -1,   232,    33,   294,    -1,   293,   116,
     914     294,    -1,   295,   290,    -1,   295,   290,   131,   276,    -1,
     915     274,    -1,   273,   109,   134,   286,   135,   110,    -1,    36,
     916     274,   109,   134,   286,   135,   110,   114,   115,    -1,    -1,
     917      36,   274,   109,   134,   286,   135,   110,   114,   297,   298,
     918     115,    -1,   299,    -1,   298,   134,   299,    -1,   300,   135,
     919     132,    -1,   301,   135,   132,    -1,   215,    -1,   217,    -1,
     920     300,   135,   116,   134,   272,    -1,   225,   309,    -1,   301,
     921     135,   116,   134,   309,    -1,    -1,   303,    -1,   305,    -1,
     922     303,   134,   305,    -1,    -1,   303,    -1,   212,    -1,   307,
     923      -1,   198,    -1,    -1,     5,    82,   306,   114,   304,   115,
     924      -1,    40,   305,    -1,   308,    -1,   323,   173,    -1,   327,
     925     134,   207,   173,    -1,   216,   173,    -1,   224,   323,   173,
     926      -1,   227,   323,   173,    -1,   231,   323,   173,    -1,   231,
     927     227,   323,   173,    -1,   224,   327,   134,   207,   173,    -1,
     928     227,   327,   134,   207,   173,    -1,   231,   327,   134,   207,
     929     173,    -1,   231,   227,   327,   134,   207,   173,    -1,   318,
     930      -1,   331,    -1,   323,    -1,   163,   123,   163,    -1,    -1,
     931      64,   109,   141,   110,   312,    -1,    -1,   313,    -1,   314,
     932      -1,   313,   314,    -1,    39,   109,   109,   315,   110,   110,
     933      -1,   316,    -1,   315,   116,   316,    -1,    -1,   317,    -1,
     934     317,   109,   170,   110,    -1,   272,    -1,   234,    -1,   235,
     935      -1,   228,    -1,   319,   312,    -1,   320,    -1,   321,   312,
     936      -1,   322,   312,    -1,   137,    -1,   109,   319,   110,    -1,
     937     149,   318,    -1,   149,   227,   318,    -1,   109,   320,   110,
     938      -1,   319,   349,    -1,   109,   320,   110,   349,    -1,   109,
     939     321,   110,   350,    -1,   109,   321,   110,    -1,   109,   320,
     940     110,   109,   134,   264,   135,   110,    -1,   109,   322,   110,
     941      -1,   324,   312,    -1,   325,    -1,   326,   312,    -1,   319,
     942     109,   134,   264,   135,   110,    -1,   109,   325,   110,   109,
     943     134,   264,   135,   110,    -1,   109,   324,   110,    -1,   149,
     944     323,    -1,   149,   227,   323,    -1,   109,   325,   110,    -1,
     945     109,   325,   110,   349,    -1,   109,   326,   110,   350,    -1,
     946     109,   326,   110,    -1,   328,    -1,   329,    -1,   330,    -1,
     947     319,   109,   271,   110,    -1,   109,   329,   110,   109,   271,
     948     110,    -1,   109,   328,   110,    -1,   149,   327,    -1,   149,
     949     227,   327,    -1,   109,   329,   110,    -1,   109,   329,   110,
     950     349,    -1,   109,   330,   110,   350,    -1,   109,   330,   110,
     951      -1,   332,   312,    -1,   333,    -1,   334,   312,    -1,   335,
     952     312,    -1,   341,    -1,   109,   332,   110,    -1,   149,   331,
     953      -1,   149,   227,   331,    -1,   109,   333,   110,    -1,   332,
     954     349,    -1,   109,   333,   110,   349,    -1,   109,   334,   110,
     955     350,    -1,   109,   334,   110,    -1,   332,   109,   134,   264,
     956     135,   110,    -1,   109,   333,   110,   109,   134,   264,   135,
     957     110,    -1,   109,   335,   110,    -1,   319,   312,    -1,   337,
     958      -1,   338,   312,    -1,   339,   312,    -1,   149,   336,    -1,
     959     149,   227,   336,    -1,   109,   337,   110,    -1,   319,   355,
     960      -1,   109,   337,   110,   349,    -1,   109,   338,   110,   350,
     961      -1,   109,   338,   110,    -1,   319,   109,   134,   264,   135,
     962     110,    -1,   109,   337,   110,   109,   134,   264,   135,   110,
     963      -1,   109,   339,   110,    -1,   341,   312,    -1,   342,    -1,
     964     343,   312,    -1,   344,   312,    -1,    74,    -1,    75,    -1,
     965     149,   340,    -1,   149,   227,   340,    -1,   109,   342,   110,
     966      -1,   341,   355,    -1,   109,   342,   110,   355,    -1,   341,
     967     109,   134,   264,   135,   110,    -1,   109,   342,   110,   109,
     968     134,   264,   135,   110,    -1,   346,    -1,   347,   312,    -1,
     969     348,   312,    -1,   149,    -1,   149,   227,    -1,   149,   345,
     970      -1,   149,   227,   345,    -1,   109,   346,   110,    -1,   349,
     971      -1,   109,   346,   110,   349,    -1,   109,   347,   110,   350,
     972      -1,   109,   347,   110,    -1,   109,   134,   264,   135,   110,
     973      -1,   109,   346,   110,   109,   134,   264,   135,   110,    -1,
     974     109,   348,   110,    -1,   111,   112,    -1,   111,   112,   350,
     975      -1,   350,    -1,   111,   134,   164,   135,   112,    -1,   111,
     976     134,   118,   135,   112,    -1,   350,   111,   134,   164,   135,
     977     112,    -1,   350,   111,   134,   118,   135,   112,    -1,   352,
     978      -1,   353,   312,    -1,   354,   312,    -1,   149,    -1,   149,
     979     227,    -1,   149,   351,    -1,   149,   227,   351,    -1,   109,
     980     352,   110,    -1,   355,    -1,   109,   352,   110,   355,    -1,
     981     109,   353,   110,   350,    -1,   109,   353,   110,    -1,   109,
     982     134,   264,   135,   110,    -1,   109,   352,   110,   109,   134,
     983     264,   135,   110,    -1,   109,   354,   110,    -1,   356,    -1,
     984     356,   350,    -1,   350,    -1,   111,   112,    -1,   111,   134,
     985     227,   118,   135,   112,    -1,   111,   134,   227,   135,   112,
     986      -1,   111,   134,   227,   164,   135,   112,    -1,   111,   134,
     987       7,   226,   164,   135,   112,    -1,   111,   134,   227,     7,
     988     164,   135,   112,    -1,   358,    -1,   359,   312,    -1,   360,
     989     312,    -1,   149,    -1,   149,   227,    -1,   149,   357,    -1,
     990     149,   227,   357,    -1,   109,   358,   110,    -1,   349,    -1,
     991     109,   358,   110,   349,    -1,   109,   359,   110,   350,    -1,
     992     109,   359,   110,    -1,   109,   358,   110,   109,   134,   264,
     993     135,   110,    -1,   109,   360,   110,    -1,   362,    -1,   370,
     994      -1,   227,   370,    -1,   363,    -1,   364,    -1,   149,   225,
     995      -1,   227,   149,   225,    -1,   149,   371,    -1,   227,   149,
     996     371,    -1,   149,   361,    -1,   227,   149,   361,    -1,   111,
     997     112,   225,    -1,   365,   225,    -1,   111,   112,   350,   225,
     998      -1,   365,   350,   225,    -1,   350,   225,    -1,   111,   112,
     999     363,    -1,   365,   363,    -1,   111,   112,   350,   363,    -1,
     1000     365,   350,   363,    -1,   350,   363,    -1,   111,   134,   227,
     1001     118,   135,   112,    -1,   111,   134,   227,   164,   135,   112,
     1002      -1,   111,   134,   231,   164,   135,   112,    -1,   111,   134,
     1003     231,   227,   164,   135,   112,    -1,   370,    -1,   227,   370,
     1004      -1,   367,    -1,   368,    -1,   369,    -1,   149,   225,    -1,
     1005     227,   149,   225,    -1,   149,   371,    -1,   227,   149,   371,
     1006      -1,   149,   366,    -1,   227,   149,   366,    -1,   111,   112,
     1007     225,    -1,   111,   112,   350,   225,    -1,   350,   225,    -1,
     1008     111,   112,   368,    -1,   111,   112,   350,   368,    -1,   350,
     1009     368,    -1,   111,   134,   263,   135,   112,    -1,   111,   112,
     1010     109,   260,   110,    -1,   370,   109,   134,   260,   135,   110,
     1011      -1,   218,   109,   134,   260,   135,   110,    -1,    -1,   116,
     1012      -1,    -1,   131,   164,    -1
    10131013};
    10141014
     
    10161016static const yytype_uint16 yyrline[] =
    10171017{
    1018        0,   292,   292,   298,   307,   308,   309,   313,   314,   315,
    1019      319,   320,   324,   325,   329,   330,   334,   335,   341,   343,
    1020      345,   347,   352,   353,   359,   363,   365,   366,   368,   369,
    1021      371,   373,   375,   383,   384,   390,   391,   392,   397,   399,
    1022      404,   405,   409,   413,   415,   417,   419,   424,   427,   429,
    1023      431,   433,   435,   437,   439,   441,   447,   449,   451,   453,
    1024      455,   457,   459,   461,   463,   468,   469,   470,   471,   475,
    1025      476,   478,   483,   484,   486,   488,   493,   494,   496,   501,
    1026      502,   504,   509,   510,   512,   514,   516,   521,   522,   524,
    1027      529,   530,   535,   536,   541,   542,   547,   548,   553,   554,
    1028      559,   560,   562,   564,   569,   574,   575,   577,   579,   585,
    1029      586,   592,   594,   596,   598,   603,   604,   609,   610,   611,
    1030      612,   613,   614,   615,   616,   617,   618,   622,   623,   629,
    1031      630,   636,   637,   638,   639,   640,   641,   642,   643,   644,
    1032      653,   660,   662,   672,   673,   678,   680,   682,   684,   688,
    1033      689,   694,   699,   702,   704,   706,   711,   713,   721,   722,
    1034      724,   728,   729,   734,   735,   740,   741,   745,   750,   751,
    1035      755,   757,   763,   764,   768,   770,   772,   774,   780,   781,
    1036      785,   786,   790,   792,   794,   799,   801,   806,   808,   812,
    1037      815,   819,   822,   826,   828,   832,   834,   841,   843,   845,
    1038      854,   856,   858,   860,   862,   867,   869,   871,   873,   878,
    1039      891,   892,   897,   899,   904,   908,   910,   912,   914,   916,
    1040      922,   923,   929,   930,   934,   935,   940,   942,   948,   949,
    1041      951,   956,   958,   965,   967,   971,   972,   977,   979,   983,
    1042      984,   988,   990,   994,   995,   999,  1000,  1004,  1005,  1020,
    1043     1021,  1022,  1023,  1024,  1028,  1033,  1040,  1050,  1055,  1060,
    1044     1068,  1073,  1078,  1083,  1088,  1096,  1118,  1123,  1130,  1132,
    1045     1139,  1144,  1149,  1160,  1165,  1170,  1175,  1180,  1189,  1194,
    1046     1202,  1203,  1204,  1205,  1211,  1216,  1224,  1225,  1226,  1227,
    1047     1231,  1232,  1233,  1234,  1239,  1240,  1249,  1250,  1255,  1256,
    1048     1261,  1263,  1265,  1267,  1269,  1272,  1271,  1283,  1284,  1286,
    1049     1296,  1297,  1302,  1306,  1308,  1310,  1312,  1314,  1316,  1318,
    1050     1320,  1325,  1327,  1329,  1331,  1333,  1335,  1337,  1339,  1341,
    1051     1343,  1345,  1347,  1349,  1355,  1356,  1358,  1360,  1362,  1367,
    1052     1368,  1374,  1375,  1377,  1379,  1384,  1386,  1388,  1390,  1395,
    1053     1396,  1398,  1400,  1405,  1406,  1408,  1413,  1414,  1416,  1418,
    1054     1423,  1425,  1427,  1432,  1433,  1437,  1439,  1445,  1444,  1448,
    1055     1450,  1455,  1457,  1462,  1464,  1469,  1470,  1472,  1473,  1478,
    1056     1479,  1481,  1483,  1488,  1490,  1496,  1497,  1499,  1502,  1505,
    1057     1510,  1511,  1516,  1521,  1525,  1527,  1533,  1532,  1539,  1541,
    1058     1547,  1548,  1556,  1557,  1561,  1562,  1563,  1565,  1567,  1574,
    1059     1575,  1577,  1579,  1584,  1585,  1591,  1592,  1596,  1597,  1602,
    1060     1603,  1604,  1606,  1614,  1615,  1617,  1620,  1622,  1626,  1627,
    1061     1628,  1630,  1632,  1636,  1641,  1649,  1650,  1659,  1661,  1666,
    1062     1667,  1668,  1672,  1673,  1674,  1678,  1679,  1680,  1684,  1685,
    1063     1686,  1691,  1692,  1693,  1694,  1700,  1701,  1703,  1708,  1709,
    1064     1714,  1715,  1716,  1717,  1718,  1733,  1734,  1739,  1740,  1748,
    1065     1750,  1752,  1755,  1757,  1759,  1782,  1783,  1785,  1787,  1792,
    1066     1793,  1795,  1800,  1805,  1806,  1812,  1811,  1815,  1819,  1821,
    1067     1823,  1829,  1830,  1835,  1840,  1842,  1847,  1849,  1850,  1852,
    1068     1857,  1859,  1861,  1866,  1868,  1873,  1878,  1886,  1892,  1891,
    1069     1905,  1906,  1911,  1912,  1916,  1921,  1926,  1934,  1939,  1950,
    1070     1951,  1962,  1963,  1969,  1970,  1974,  1975,  1976,  1979,  1978,
    1071     1989,  1994,  1999,  2005,  2014,  2020,  2026,  2032,  2038,  2046,
    1072     2052,  2060,  2066,  2075,  2076,  2077,  2081,  2085,  2087,  2092,
    1073     2093,  2097,  2098,  2103,  2109,  2110,  2113,  2115,  2116,  2120,
    1074     2121,  2122,  2123,  2157,  2159,  2160,  2162,  2167,  2172,  2177,
    1075     2179,  2181,  2186,  2188,  2190,  2192,  2197,  2199,  2209,  2211,
    1076     2212,  2217,  2219,  2221,  2226,  2228,  2230,  2235,  2237,  2239,
    1077     2248,  2249,  2250,  2254,  2256,  2258,  2263,  2265,  2267,  2272,
    1078     2274,  2276,  2291,  2293,  2294,  2296,  2301,  2302,  2307,  2309,
    1079     2311,  2316,  2318,  2320,  2322,  2327,  2329,  2331,  2341,  2343,
    1080     2344,  2346,  2351,  2353,  2355,  2360,  2362,  2364,  2366,  2371,
    1081     2373,  2375,  2406,  2408,  2409,  2411,  2416,  2421,  2429,  2431,
    1082     2433,  2438,  2440,  2445,  2447,  2461,  2462,  2464,  2469,  2471,
    1083     2473,  2475,  2477,  2482,  2483,  2485,  2487,  2492,  2494,  2496,
    1084     2502,  2504,  2506,  2510,  2512,  2514,  2516,  2530,  2531,  2533,
    1085     2538,  2540,  2542,  2544,  2546,  2551,  2552,  2554,  2556,  2561,
    1086     2563,  2565,  2571,  2572,  2574,  2583,  2586,  2588,  2591,  2593,
    1087     2595,  2608,  2609,  2611,  2616,  2618,  2620,  2622,  2624,  2629,
    1088     2630,  2632,  2634,  2639,  2641,  2649,  2650,  2651,  2656,  2657,
    1089     2661,  2663,  2665,  2667,  2669,  2671,  2678,  2680,  2682,  2684,
    1090     2686,  2688,  2690,  2692,  2694,  2696,  2701,  2703,  2705,  2710,
    1091     2736,  2737,  2739,  2743,  2744,  2748,  2750,  2752,  2754,  2756,
    1092     2758,  2765,  2767,  2769,  2771,  2773,  2775,  2780,  2785,  2787,
    1093     2789,  2807,  2809,  2814,  2815
     1018       0,   290,   290,   296,   305,   306,   307,   311,   312,   313,
     1019     317,   318,   322,   323,   327,   328,   332,   333,   339,   341,
     1020     343,   345,   350,   351,   357,   361,   363,   364,   366,   367,
     1021     369,   371,   373,   381,   382,   388,   389,   390,   395,   397,
     1022     402,   403,   407,   411,   413,   415,   417,   422,   425,   427,
     1023     429,   431,   436,   438,   440,   442,   444,   446,   448,   450,
     1024     452,   454,   456,   463,   464,   466,   470,   471,   472,   473,
     1025     477,   478,   480,   485,   486,   488,   490,   495,   496,   498,
     1026     503,   504,   506,   511,   512,   514,   516,   518,   523,   524,
     1027     526,   531,   532,   537,   538,   543,   544,   549,   550,   555,
     1028     556,   561,   562,   564,   566,   571,   576,   577,   579,   581,
     1029     587,   588,   594,   596,   598,   600,   605,   606,   611,   612,
     1030     613,   614,   615,   616,   617,   618,   619,   620,   624,   625,
     1031     631,   632,   638,   639,   640,   641,   642,   643,   644,   645,
     1032     646,   656,   663,   665,   675,   676,   681,   683,   685,   687,
     1033     691,   692,   697,   702,   705,   707,   709,   714,   716,   724,
     1034     725,   727,   731,   732,   737,   738,   743,   744,   748,   753,
     1035     754,   758,   760,   766,   767,   771,   773,   775,   777,   783,
     1036     784,   788,   789,   793,   795,   797,   802,   804,   809,   811,
     1037     815,   818,   822,   825,   829,   831,   835,   837,   844,   846,
     1038     848,   857,   859,   861,   863,   865,   870,   872,   874,   876,
     1039     881,   894,   895,   900,   902,   907,   911,   913,   915,   917,
     1040     919,   925,   926,   932,   933,   937,   938,   943,   945,   951,
     1041     952,   954,   959,   961,   968,   970,   974,   975,   980,   982,
     1042     986,   987,   991,   993,   997,   998,  1002,  1003,  1007,  1008,
     1043    1023,  1024,  1025,  1026,  1027,  1031,  1036,  1043,  1053,  1058,
     1044    1063,  1071,  1076,  1081,  1086,  1091,  1099,  1121,  1126,  1133,
     1045    1135,  1142,  1147,  1152,  1163,  1168,  1173,  1178,  1183,  1192,
     1046    1197,  1205,  1206,  1207,  1208,  1214,  1219,  1227,  1228,  1229,
     1047    1230,  1234,  1235,  1236,  1237,  1242,  1243,  1252,  1253,  1258,
     1048    1259,  1264,  1266,  1268,  1270,  1272,  1275,  1274,  1286,  1287,
     1049    1289,  1299,  1300,  1305,  1309,  1311,  1313,  1315,  1317,  1319,
     1050    1321,  1323,  1328,  1330,  1332,  1334,  1336,  1338,  1340,  1342,
     1051    1344,  1346,  1348,  1350,  1352,  1358,  1359,  1361,  1363,  1365,
     1052    1370,  1371,  1377,  1378,  1380,  1382,  1387,  1389,  1391,  1393,
     1053    1398,  1399,  1401,  1403,  1408,  1409,  1411,  1416,  1417,  1419,
     1054    1421,  1426,  1428,  1430,  1435,  1436,  1440,  1442,  1448,  1447,
     1055    1451,  1453,  1458,  1460,  1465,  1467,  1472,  1473,  1475,  1476,
     1056    1481,  1482,  1484,  1486,  1491,  1493,  1499,  1500,  1502,  1505,
     1057    1508,  1513,  1514,  1519,  1524,  1528,  1530,  1536,  1535,  1542,
     1058    1544,  1550,  1551,  1559,  1560,  1564,  1565,  1566,  1568,  1570,
     1059    1577,  1578,  1580,  1582,  1587,  1588,  1594,  1595,  1599,  1600,
     1060    1605,  1606,  1607,  1609,  1617,  1618,  1620,  1623,  1625,  1629,
     1061    1630,  1631,  1633,  1635,  1639,  1644,  1652,  1653,  1662,  1664,
     1062    1669,  1670,  1671,  1675,  1676,  1677,  1681,  1682,  1683,  1687,
     1063    1688,  1689,  1694,  1695,  1696,  1697,  1703,  1704,  1706,  1711,
     1064    1712,  1717,  1718,  1719,  1720,  1721,  1736,  1737,  1742,  1743,
     1065    1751,  1753,  1755,  1758,  1760,  1762,  1785,  1786,  1788,  1790,
     1066    1795,  1796,  1798,  1803,  1808,  1809,  1815,  1814,  1818,  1822,
     1067    1824,  1826,  1832,  1833,  1838,  1843,  1845,  1850,  1852,  1853,
     1068    1855,  1860,  1862,  1864,  1869,  1871,  1876,  1881,  1889,  1895,
     1069    1894,  1908,  1909,  1914,  1915,  1919,  1924,  1929,  1937,  1942,
     1070    1953,  1954,  1965,  1966,  1972,  1973,  1977,  1978,  1979,  1982,
     1071    1981,  1992,  1997,  2003,  2009,  2018,  2024,  2030,  2036,  2042,
     1072    2050,  2056,  2064,  2070,  2079,  2080,  2081,  2085,  2089,  2091,
     1073    2096,  2097,  2101,  2102,  2107,  2113,  2114,  2117,  2119,  2120,
     1074    2124,  2125,  2126,  2127,  2161,  2163,  2164,  2166,  2171,  2176,
     1075    2181,  2183,  2185,  2190,  2192,  2194,  2196,  2201,  2203,  2212,
     1076    2214,  2215,  2220,  2222,  2224,  2229,  2231,  2233,  2238,  2240,
     1077    2242,  2251,  2252,  2253,  2257,  2259,  2261,  2266,  2268,  2270,
     1078    2275,  2277,  2279,  2294,  2296,  2297,  2299,  2304,  2305,  2310,
     1079    2312,  2314,  2319,  2321,  2323,  2325,  2330,  2332,  2334,  2344,
     1080    2346,  2347,  2349,  2354,  2356,  2358,  2363,  2365,  2367,  2369,
     1081    2374,  2376,  2378,  2409,  2411,  2412,  2414,  2419,  2424,  2432,
     1082    2434,  2436,  2441,  2443,  2448,  2450,  2464,  2465,  2467,  2472,
     1083    2474,  2476,  2478,  2480,  2485,  2486,  2488,  2490,  2495,  2497,
     1084    2499,  2505,  2507,  2509,  2513,  2515,  2517,  2519,  2533,  2534,
     1085    2536,  2541,  2543,  2545,  2547,  2549,  2554,  2555,  2557,  2559,
     1086    2564,  2566,  2568,  2574,  2575,  2577,  2586,  2589,  2591,  2594,
     1087    2596,  2598,  2611,  2612,  2614,  2619,  2621,  2623,  2625,  2627,
     1088    2632,  2633,  2635,  2637,  2642,  2644,  2652,  2653,  2654,  2659,
     1089    2660,  2664,  2666,  2668,  2670,  2672,  2674,  2681,  2683,  2685,
     1090    2687,  2689,  2691,  2693,  2695,  2697,  2699,  2704,  2706,  2708,
     1091    2713,  2739,  2740,  2742,  2746,  2747,  2751,  2753,  2755,  2757,
     1092    2759,  2761,  2768,  2770,  2772,  2774,  2776,  2778,  2783,  2788,
     1093    2790,  2792,  2810,  2812,  2817,  2818
    10941094};
    10951095#endif
     
    11171117  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
    11181118  "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
    1119   "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'",
    1120   "'*'", "'&'", "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",
     1119  "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'*'",
     1120  "'&'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",
    11211121  "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",
    11221122  "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
    11231123  "string_literal_list", "primary_expression", "postfix_expression",
    11241124  "argument_expression_list", "argument_expression", "field_list", "field",
    1125   "unary_expression", "unary_operator", "cast_expression",
    1126   "multiplicative_expression", "additive_expression", "shift_expression",
    1127   "relational_expression", "equality_expression", "AND_expression",
    1128   "exclusive_OR_expression", "inclusive_OR_expression",
     1125  "unary_expression", "ptrref_operator", "unary_operator",
     1126  "cast_expression", "multiplicative_expression", "additive_expression",
     1127  "shift_expression", "relational_expression", "equality_expression",
     1128  "AND_expression", "exclusive_OR_expression", "inclusive_OR_expression",
    11291129  "logical_AND_expression", "logical_OR_expression",
    11301130  "conditional_expression", "constant_expression", "assignment_expression",
     
    11851185  "function_ptr", "function_array", "old_function_declarator",
    11861186  "old_function_no_ptr", "old_function_ptr", "old_function_array",
    1187   "type_redeclarator", "paren_type", "type_ptr", "type_array",
     1187  "variable_type_redeclarator", "paren_type", "type_ptr", "type_array",
    11881188  "type_function", "identifier_parameter_declarator",
    11891189  "identifier_parameter_ptr", "identifier_parameter_array",
     
    12241224     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    12251225     355,   356,   357,   358,   359,   360,   361,   362,   363,    40,
    1226       41,    91,    93,    46,   123,   125,    44,    58,    33,    42,
    1227       38,    43,    45,   126,    47,    37,    60,    62,    94,   124,
     1226      41,    91,    93,    46,   123,   125,    44,    58,    42,    38,
     1227      43,    45,    33,   126,    47,    37,    60,    62,    94,   124,
    12281228      63,    61,    59
    12291229};
     
    12391239     146,   146,   147,   147,   147,   147,   147,   148,   148,   148,
    12401240     148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
    1241      148,   148,   148,   148,   148,   149,   149,   149,   149,   150,
    1242      150,   150,   151,   151,   151,   151,   152,   152,   152,   153,
    1243      153,   153,   154,   154,   154,   154,   154,   155,   155,   155,
    1244      156,   156,   157,   157,   158,   158,   159,   159,   160,   160,
    1245      161,   161,   161,   161,   162,   163,   163,   163,   163,   164,
    1246      164,   165,   165,   165,   165,   166,   166,   167,   167,   167,
    1247      167,   167,   167,   167,   167,   167,   167,   168,   168,   169,
    1248      169,   170,   170,   170,   170,   170,   170,   170,   170,   170,
    1249      171,   172,   172,   173,   173,   174,   174,   174,   174,   175,
    1250      175,   176,   177,   177,   177,   177,   177,   177,   178,   178,
    1251      178,   179,   179,   180,   180,   181,   181,   182,   183,   183,
    1252      184,   184,   185,   185,   186,   186,   186,   186,   187,   187,
    1253      188,   188,   189,   189,   189,   190,   190,   191,   191,   191,
    1254      191,   191,   191,   191,   191,   191,   191,   192,   192,   192,
    1255      193,   193,   193,   193,   193,   194,   194,   194,   194,   195,
    1256      196,   196,   196,   196,   196,   197,   197,   197,   197,   197,
    1257      198,   198,   199,   199,   200,   200,   201,   201,   202,   202,
    1258      202,   203,   203,   204,   204,   205,   205,   206,   206,   207,
    1259      207,   208,   208,   209,   209,   210,   210,   211,   211,   212,
    1260      212,   212,   212,   212,   213,   213,   213,   214,   214,   214,
    1261      215,   215,   215,   215,   215,   216,   216,   216,   217,   217,
    1262      218,   218,   218,   219,   219,   219,   219,   219,   220,   220,
    1263      221,   221,   221,   221,   222,   222,   223,   223,   223,   223,
    1264      224,   224,   224,   224,   225,   225,   226,   226,   227,   227,
    1265      228,   228,   228,   228,   228,   229,   228,   230,   230,   230,
    1266      231,   231,   232,   233,   233,   233,   233,   233,   233,   233,
    1267      233,   234,   234,   234,   234,   234,   234,   234,   234,   234,
    1268      234,   234,   234,   234,   235,   235,   235,   235,   235,   236,
    1269      236,   237,   237,   237,   237,   238,   238,   238,   238,   239,
    1270      239,   239,   239,   240,   240,   240,   241,   241,   241,   241,
    1271      242,   242,   242,   243,   243,   244,   244,   245,   244,   244,
    1272      244,   246,   246,   247,   247,   248,   248,   248,   248,   249,
    1273      249,   249,   249,   250,   250,   251,   251,   251,   251,   251,
    1274      252,   252,   253,   254,   255,   255,   256,   255,   257,   257,
    1275      258,   258,   259,   259,   260,   260,   260,   260,   260,   261,
    1276      261,   261,   261,   262,   262,   263,   263,   264,   264,   265,
    1277      265,   265,   265,   266,   266,   266,   266,   266,   267,   267,
    1278      267,   267,   267,   268,   268,   269,   269,   270,   270,   271,
    1279      271,   271,   272,   272,   272,   273,   273,   273,   274,   274,
    1280      274,   275,   275,   275,   275,   276,   276,   276,   277,   277,
    1281      278,   278,   278,   278,   278,   279,   279,   280,   280,   281,
    1282      281,   281,   281,   281,   281,   282,   282,   282,   282,   283,
    1283      283,   283,   284,   285,   285,   287,   286,   286,   288,   288,
    1284      288,   289,   289,   290,   290,   290,   291,   291,   291,   291,
    1285      292,   292,   292,   293,   293,   294,   294,   295,   296,   295,
    1286      297,   297,   298,   298,   299,   299,   299,   300,   300,   301,
    1287      301,   302,   302,   303,   303,   304,   304,   304,   305,   304,
    1288      304,   306,   306,   306,   307,   307,   307,   307,   307,   307,
    1289      307,   307,   307,   308,   308,   308,   309,   310,   310,   311,
    1290      311,   312,   312,   313,   314,   314,   315,   315,   315,   316,
    1291      316,   316,   316,   317,   317,   317,   317,   318,   318,   319,
    1292      319,   319,   320,   320,   320,   320,   321,   321,   322,   322,
    1293      322,   323,   323,   323,   324,   324,   324,   325,   325,   325,
    1294      326,   326,   326,   327,   327,   327,   328,   328,   328,   329,
    1295      329,   329,   330,   330,   330,   330,   331,   331,   332,   332,
    1296      332,   333,   333,   333,   333,   334,   334,   334,   335,   335,
    1297      335,   335,   336,   336,   336,   337,   337,   337,   337,   338,
    1298      338,   338,   339,   339,   339,   339,   340,   340,   341,   341,
    1299      341,   342,   342,   343,   343,   344,   344,   344,   345,   345,
    1300      345,   345,   345,   346,   346,   346,   346,   347,   347,   347,
    1301      348,   348,   348,   349,   349,   349,   349,   350,   350,   350,
    1302      351,   351,   351,   351,   351,   352,   352,   352,   352,   353,
    1303      353,   353,   354,   354,   354,   355,   355,   355,   355,   355,
    1304      355,   356,   356,   356,   357,   357,   357,   357,   357,   358,
    1305      358,   358,   358,   359,   359,   360,   360,   360,   361,   361,
    1306      362,   362,   362,   362,   362,   362,   363,   363,   363,   363,
    1307      363,   363,   363,   363,   363,   363,   364,   364,   364,   364,
    1308      365,   365,   365,   366,   366,   367,   367,   367,   367,   367,
    1309      367,   368,   368,   368,   368,   368,   368,   369,   370,   370,
    1310      370,   371,   371,   372,   372
     1241     148,   148,   148,   149,   149,   149,   150,   150,   150,   150,
     1242     151,   151,   151,   152,   152,   152,   152,   153,   153,   153,
     1243     154,   154,   154,   155,   155,   155,   155,   155,   156,   156,
     1244     156,   157,   157,   158,   158,   159,   159,   160,   160,   161,
     1245     161,   162,   162,   162,   162,   163,   164,   164,   164,   164,
     1246     165,   165,   166,   166,   166,   166,   167,   167,   168,   168,
     1247     168,   168,   168,   168,   168,   168,   168,   168,   169,   169,
     1248     170,   170,   171,   171,   171,   171,   171,   171,   171,   171,
     1249     171,   172,   173,   173,   174,   174,   175,   175,   175,   175,
     1250     176,   176,   177,   178,   178,   178,   178,   178,   178,   179,
     1251     179,   179,   180,   180,   181,   181,   182,   182,   183,   184,
     1252     184,   185,   185,   186,   186,   187,   187,   187,   187,   188,
     1253     188,   189,   189,   190,   190,   190,   191,   191,   192,   192,
     1254     192,   192,   192,   192,   192,   192,   192,   192,   193,   193,
     1255     193,   194,   194,   194,   194,   194,   195,   195,   195,   195,
     1256     196,   197,   197,   197,   197,   197,   198,   198,   198,   198,
     1257     198,   199,   199,   200,   200,   201,   201,   202,   202,   203,
     1258     203,   203,   204,   204,   205,   205,   206,   206,   207,   207,
     1259     208,   208,   209,   209,   210,   210,   211,   211,   212,   212,
     1260     213,   213,   213,   213,   213,   214,   214,   214,   215,   215,
     1261     215,   216,   216,   216,   216,   216,   217,   217,   217,   218,
     1262     218,   219,   219,   219,   220,   220,   220,   220,   220,   221,
     1263     221,   222,   222,   222,   222,   223,   223,   224,   224,   224,
     1264     224,   225,   225,   225,   225,   226,   226,   227,   227,   228,
     1265     228,   229,   229,   229,   229,   229,   230,   229,   231,   231,
     1266     231,   232,   232,   233,   234,   234,   234,   234,   234,   234,
     1267     234,   234,   235,   235,   235,   235,   235,   235,   235,   235,
     1268     235,   235,   235,   235,   235,   236,   236,   236,   236,   236,
     1269     237,   237,   238,   238,   238,   238,   239,   239,   239,   239,
     1270     240,   240,   240,   240,   241,   241,   241,   242,   242,   242,
     1271     242,   243,   243,   243,   244,   244,   245,   245,   246,   245,
     1272     245,   245,   247,   247,   248,   248,   249,   249,   249,   249,
     1273     250,   250,   250,   250,   251,   251,   252,   252,   252,   252,
     1274     252,   253,   253,   254,   255,   256,   256,   257,   256,   258,
     1275     258,   259,   259,   260,   260,   261,   261,   261,   261,   261,
     1276     262,   262,   262,   262,   263,   263,   264,   264,   265,   265,
     1277     266,   266,   266,   266,   267,   267,   267,   267,   267,   268,
     1278     268,   268,   268,   268,   269,   269,   270,   270,   271,   271,
     1279     272,   272,   272,   273,   273,   273,   274,   274,   274,   275,
     1280     275,   275,   276,   276,   276,   276,   277,   277,   277,   278,
     1281     278,   279,   279,   279,   279,   279,   280,   280,   281,   281,
     1282     282,   282,   282,   282,   282,   282,   283,   283,   283,   283,
     1283     284,   284,   284,   285,   286,   286,   288,   287,   287,   289,
     1284     289,   289,   290,   290,   291,   291,   291,   292,   292,   292,
     1285     292,   293,   293,   293,   294,   294,   295,   295,   296,   297,
     1286     296,   298,   298,   299,   299,   300,   300,   300,   301,   301,
     1287     302,   302,   303,   303,   304,   304,   305,   305,   305,   306,
     1288     305,   305,   307,   307,   307,   308,   308,   308,   308,   308,
     1289     308,   308,   308,   308,   309,   309,   309,   310,   311,   311,
     1290     312,   312,   313,   313,   314,   315,   315,   316,   316,   316,
     1291     317,   317,   317,   317,   318,   318,   318,   318,   319,   319,
     1292     320,   320,   320,   321,   321,   321,   321,   322,   322,   323,
     1293     323,   323,   324,   324,   324,   325,   325,   325,   326,   326,
     1294     326,   327,   327,   327,   328,   328,   328,   329,   329,   329,
     1295     330,   330,   330,   331,   331,   331,   331,   332,   332,   333,
     1296     333,   333,   334,   334,   334,   334,   335,   335,   335,   336,
     1297     336,   336,   336,   337,   337,   337,   338,   338,   338,   338,
     1298     339,   339,   339,   340,   340,   340,   340,   341,   341,   342,
     1299     342,   342,   343,   343,   344,   344,   345,   345,   345,   346,
     1300     346,   346,   346,   346,   347,   347,   347,   347,   348,   348,
     1301     348,   349,   349,   349,   350,   350,   350,   350,   351,   351,
     1302     351,   352,   352,   352,   352,   352,   353,   353,   353,   353,
     1303     354,   354,   354,   355,   355,   355,   356,   356,   356,   356,
     1304     356,   356,   357,   357,   357,   358,   358,   358,   358,   358,
     1305     359,   359,   359,   359,   360,   360,   361,   361,   361,   362,
     1306     362,   363,   363,   363,   363,   363,   363,   364,   364,   364,
     1307     364,   364,   364,   364,   364,   364,   364,   365,   365,   365,
     1308     365,   366,   366,   366,   367,   367,   368,   368,   368,   368,
     1309     368,   368,   369,   369,   369,   369,   369,   369,   370,   371,
     1310     371,   371,   372,   372,   373,   373
    13111311};
    13121312
     
    13191319       2,     7,     4,     1,     3,     0,     1,     3,     7,     9,
    13201320       1,     3,     1,     3,     7,     3,     7,     1,     1,     1,
    1321        2,     2,     2,     2,     2,     2,     2,     4,     6,     1,
    1322        4,     4,     2,     4,     2,     1,     1,     1,     1,     1,
    1323        4,     4,     1,     3,     3,     3,     1,     3,     3,     1,
    1324        3,     3,     1,     3,     3,     3,     3,     1,     3,     3,
    1325        1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
    1326        1,     5,     4,     5,     1,     1,     3,     3,     2,     0,
    1327        1,     2,     5,     6,     7,     1,     3,     1,     1,     1,
    1328        1,     1,     1,     1,     1,     1,     1,     1,     3,     0,
    1329        1,     1,     1,     1,     1,     1,     1,     1,     1,     6,
    1330        4,     2,     7,     1,     3,     1,     2,     1,     2,     1,
    1331        2,     2,     5,     7,     5,     9,     5,     9,     1,     3,
    1332        1,     1,     3,     3,     2,     1,     2,     2,     0,     1,
    1333        2,     3,     0,     1,     2,     3,     3,     4,     0,     1,
    1334        1,     2,     5,     7,     6,     6,     4,     3,     4,     2,
    1335        3,     2,     3,     3,     3,     3,     5,     3,     3,     4,
    1336        1,     5,     6,     5,     6,     9,    10,     9,    10,     2,
    1337        1,     2,     2,     2,     1,     6,     8,    10,    12,    14,
    1338        0,     1,     0,     1,     1,     3,     4,     7,     0,     1,
    1339        3,     1,     3,     1,     1,     1,     3,     1,     1,     1,
    1340        3,     0,     1,     3,     4,     1,     3,     1,     1,     3,
    1341        3,     3,     3,     3,     2,     3,     6,     3,     3,     4,
    1342        1,     2,     2,     3,     5,     8,     7,     7,     5,     9,
    1343        2,     2,     5,     3,     5,     4,     3,     4,     4,     7,
    1344        3,     3,     3,     3,     4,     6,     1,     1,     1,     1,
    1345        1,     1,     1,     1,     0,     1,     1,     2,     1,     1,
    1346        1,     1,     1,     1,     1,     0,     5,     1,     2,     3,
    1347        1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
     1321       2,     2,     2,     2,     2,     2,     4,     6,     1,     4,
     1322       4,     2,     4,     1,     1,     1,     1,     1,     1,     1,
     1323       1,     4,     4,     1,     3,     3,     3,     1,     3,     3,
     1324       1,     3,     3,     1,     3,     3,     3,     3,     1,     3,
     1325       3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
     1326       3,     1,     5,     4,     5,     1,     1,     3,     3,     2,
     1327       0,     1,     2,     5,     6,     7,     1,     3,     1,     1,
     1328       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
     1329       0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1330       6,     4,     2,     7,     1,     3,     1,     2,     1,     2,
     1331       1,     2,     2,     5,     7,     5,     9,     5,     9,     1,
     1332       3,     1,     1,     3,     3,     2,     1,     2,     2,     0,
     1333       1,     2,     3,     0,     1,     2,     3,     3,     4,     0,
     1334       1,     1,     2,     5,     7,     6,     6,     4,     3,     4,
     1335       2,     3,     2,     3,     3,     3,     3,     5,     3,     3,
     1336       4,     1,     5,     6,     5,     6,     9,    10,     9,    10,
     1337       2,     1,     2,     2,     2,     1,     6,     8,    10,    12,
     1338      14,     0,     1,     0,     1,     1,     3,     4,     7,     0,
     1339       1,     3,     1,     3,     1,     1,     1,     3,     1,     1,
     1340       1,     3,     0,     1,     3,     4,     1,     3,     1,     1,
     1341       3,     3,     3,     3,     3,     2,     3,     6,     3,     3,
     1342       4,     1,     2,     2,     3,     5,     8,     7,     7,     5,
     1343       9,     2,     2,     5,     3,     5,     4,     3,     4,     4,
     1344       7,     3,     3,     3,     3,     4,     6,     1,     1,     1,
     1345       1,     1,     1,     1,     1,     0,     1,     1,     2,     1,
     1346       1,     1,     1,     1,     1,     1,     0,     5,     1,     2,
     1347       3,     1,     2,     1,     1,     1,     1,     1,     1,     1,
    13481348       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1349        1,     1,     1,     1,     1,     2,     2,     3,     3,     1,
    1350        3,     1,     2,     2,     2,     4,     4,     4,     4,     1,
    1351        2,     2,     3,     1,     2,     2,     1,     2,     2,     3,
    1352        1,     2,     2,     1,     1,     4,     2,     0,     6,     7,
    1353        2,     2,     2,     1,     2,     2,     3,     2,     3,     1,
    1354        2,     3,     2,     2,     4,     0,     1,     2,     2,     1,
    1355        0,     1,     2,     2,     5,     2,     0,     7,     2,     4,
    1356        0,     2,     0,     1,     1,     1,     5,     5,     5,     1,
    1357        5,     5,     9,     1,     5,     0,     1,     1,     5,     1,
    1358        1,     5,     5,     1,     3,     3,     4,     1,     1,     1,
    1359        1,     2,     1,     3,     3,     1,     2,     1,     3,     1,
     1349       1,     1,     1,     1,     1,     1,     2,     2,     3,     3,
     1350       1,     3,     1,     2,     2,     2,     4,     4,     4,     4,
     1351       1,     2,     2,     3,     1,     2,     2,     1,     2,     2,
     1352       3,     1,     2,     2,     1,     1,     4,     2,     0,     6,
     1353       7,     2,     2,     2,     1,     2,     2,     3,     2,     3,
     1354       1,     2,     3,     2,     2,     4,     0,     1,     2,     2,
     1355       1,     0,     1,     2,     2,     5,     2,     0,     7,     2,
     1356       4,     0,     2,     0,     1,     1,     1,     5,     5,     5,
     1357       1,     5,     5,     9,     1,     5,     0,     1,     1,     5,
     1358       1,     1,     5,     5,     1,     3,     3,     4,     1,     1,
     1359       1,     1,     2,     1,     3,     3,     1,     2,     1,     3,
    13601360       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1361        2,     1,     1,     1,     2,     0,     2,     2,     1,     4,
    1362        0,     1,     2,     3,     4,     2,     2,     1,     2,     1,
    1363        2,     5,     5,     7,     6,     1,     2,     2,     3,     1,
    1364        2,     2,     4,     2,     4,     0,     4,     2,     1,     1,
    1365        1,     0,     2,     5,     5,    13,     1,     1,     3,     3,
    1366        2,     3,     3,     2,     4,     1,     6,     9,     0,    11,
    1367        1,     3,     3,     3,     1,     1,     5,     2,     5,     0,
    1368        1,     1,     3,     0,     1,     1,     1,     1,     0,     6,
    1369        2,     1,     2,     4,     2,     3,     3,     3,     4,     5,
    1370        5,     5,     6,     1,     1,     1,     3,     0,     5,     0,
    1371        1,     1,     2,     6,     1,     3,     0,     1,     4,     1,
    1372        1,     1,     1,     2,     1,     2,     2,     1,     3,     2,
    1373        3,     3,     2,     4,     4,     3,     8,     3,     2,     1,
    1374        2,     6,     8,     3,     2,     3,     3,     4,     4,     3,
    1375        1,     1,     1,     4,     6,     3,     2,     3,     3,     4,
    1376        4,     3,     2,     1,     2,     2,     1,     3,     2,     3,
    1377        3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
    1378        2,     2,     2,     3,     3,     2,     4,     4,     3,     6,
    1379        8,     3,     2,     1,     2,     2,     1,     1,     2,     3,
    1380        3,     2,     4,     6,     8,     1,     2,     2,     1,     2,
    1381        2,     3,     3,     1,     4,     4,     3,     5,     8,     3,
    1382        2,     3,     1,     5,     5,     6,     6,     1,     2,     2,
    1383        1,     2,     2,     3,     3,     1,     4,     4,     3,     5,
    1384        8,     3,     1,     2,     1,     2,     6,     5,     6,     7,
    1385        7,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    1386        4,     4,     3,     8,     3,     1,     1,     2,     1,     1,
    1387        2,     3,     2,     3,     2,     3,     3,     2,     4,     3,
    1388        2,     3,     2,     4,     3,     2,     6,     6,     6,     7,
    1389        1,     2,     1,     1,     1,     2,     3,     2,     3,     2,
    1390        3,     3,     4,     2,     3,     4,     2,     5,     5,     6,
    1391        6,     0,     1,     0,     2
     1361       1,     2,     1,     1,     1,     2,     0,     2,     2,     1,
     1362       4,     0,     1,     2,     3,     4,     2,     2,     1,     2,
     1363       1,     2,     5,     5,     7,     6,     1,     2,     2,     3,
     1364       1,     2,     2,     4,     2,     4,     0,     4,     2,     1,
     1365       1,     1,     0,     2,     5,     5,    13,     1,     1,     3,
     1366       3,     2,     3,     3,     2,     4,     1,     6,     9,     0,
     1367      11,     1,     3,     3,     3,     1,     1,     5,     2,     5,
     1368       0,     1,     1,     3,     0,     1,     1,     1,     1,     0,
     1369       6,     2,     1,     2,     4,     2,     3,     3,     3,     4,
     1370       5,     5,     5,     6,     1,     1,     1,     3,     0,     5,
     1371       0,     1,     1,     2,     6,     1,     3,     0,     1,     4,
     1372       1,     1,     1,     1,     2,     1,     2,     2,     1,     3,
     1373       2,     3,     3,     2,     4,     4,     3,     8,     3,     2,
     1374       1,     2,     6,     8,     3,     2,     3,     3,     4,     4,
     1375       3,     1,     1,     1,     4,     6,     3,     2,     3,     3,
     1376       4,     4,     3,     2,     1,     2,     2,     1,     3,     2,
     1377       3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
     1378       1,     2,     2,     2,     3,     3,     2,     4,     4,     3,
     1379       6,     8,     3,     2,     1,     2,     2,     1,     1,     2,
     1380       3,     3,     2,     4,     6,     8,     1,     2,     2,     1,
     1381       2,     2,     3,     3,     1,     4,     4,     3,     5,     8,
     1382       3,     2,     3,     1,     5,     5,     6,     6,     1,     2,
     1383       2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
     1384       5,     8,     3,     1,     2,     1,     2,     6,     5,     6,
     1385       7,     7,     1,     2,     2,     1,     2,     2,     3,     3,
     1386       1,     4,     4,     3,     8,     3,     1,     1,     2,     1,
     1387       1,     2,     3,     2,     3,     2,     3,     3,     2,     4,
     1388       3,     2,     3,     2,     4,     3,     2,     6,     6,     6,
     1389       7,     1,     2,     1,     1,     1,     2,     3,     2,     3,
     1390       2,     3,     3,     4,     2,     3,     4,     2,     5,     5,
     1391       6,     6,     0,     1,     0,     2
    13921392};
    13931393
     
    13971397static const yytype_uint16 yydefact[] =
    13981398{
    1399      294,   294,   315,   313,   316,   314,   317,   318,   300,   302,
    1400      301,     0,   303,   329,   321,   326,   324,   325,   323,   322,
    1401      327,   328,   333,   330,   331,   332,   549,   549,   549,     0,
    1402        0,     0,   294,   220,   304,   319,   320,     7,   360,     0,
    1403        8,    14,    15,     0,     2,   294,   567,     9,   527,   525,
    1404      247,     3,   455,     3,   260,     0,     3,     3,     3,   248,
    1405        3,     0,     0,     0,   295,   296,   298,   294,   307,   310,
    1406      312,   341,   286,   334,   339,   287,   349,   288,   356,   353,
    1407      363,     0,     0,   364,   289,   475,   479,     3,     3,     0,
    1408        2,   521,   526,   531,   299,     0,     0,   549,   579,   549,
    1409        2,   590,   591,   592,   294,     0,   733,   734,     0,    12,
    1410      294,     0,    13,   270,   271,     0,   295,   290,   291,   292,
    1411      293,   528,   305,   393,   550,   551,   371,   372,    12,   446,
    1412      447,    11,   442,   445,     0,   505,   500,   491,   446,   447,
    1413        0,     0,   530,   221,     0,   294,     0,     0,     0,     0,
    1414        0,     0,     0,     0,   294,   294,     2,     0,   735,   295,
    1415      584,   596,   739,   732,   730,   737,     0,     0,     0,   254,
    1416        2,     0,   534,   440,   441,   439,     0,     0,     0,     0,
    1417      549,     0,   636,   637,     0,     0,   547,   543,   549,   564,
    1418      549,   549,   544,     2,   545,   549,   603,   549,   549,   606,
    1419        0,     0,     0,   294,   294,   313,   361,     2,   294,   261,
    1420      297,   308,   342,   354,   480,     0,     2,     0,   455,   262,
    1421      295,   335,   350,   357,   476,     0,     2,     0,   311,   336,
    1422      343,   344,     0,   351,   355,   358,   362,   447,   294,   294,
    1423      366,   370,     0,   395,   477,   481,     0,     0,     0,     1,
    1424      294,     2,   532,   578,   580,   294,     2,   743,   295,   746,
    1425      547,   547,   295,     0,     0,     0,   273,   549,   544,     2,
    1426      294,     0,     0,   294,   552,     2,   503,     2,   556,     0,
    1427        0,     0,     0,     0,     0,    18,    59,     4,     5,     6,
    1428       16,     0,     0,     0,   294,     2,     0,   294,    65,    66,
    1429       67,    68,    48,    19,    49,    22,    47,    69,     0,    72,
    1430       76,    79,    82,    87,    90,    92,    94,    96,    98,   100,
    1431      105,   497,   753,   453,   496,     0,   451,   452,     0,   568,
    1432      583,   586,   589,   595,   598,   601,   360,     0,     2,   741,
    1433        0,   294,   744,     2,   294,     3,   427,     0,   435,   295,
    1434      294,   307,   334,   287,   349,   356,     3,     3,   409,   413,
    1435      423,   428,   475,   294,   429,   708,   709,   294,   430,   432,
    1436      294,     2,   585,   597,   731,     2,     2,   249,     2,   460,
    1437        0,   458,   457,   456,   141,     2,     2,   251,     2,     2,
    1438      250,     2,   281,     2,   282,     0,   280,     0,     0,     0,
    1439        0,     0,     0,     0,     0,     0,   569,   608,     0,   455,
    1440        2,   563,   572,   662,   565,   566,   535,   294,     2,   602,
    1441      611,   604,   605,     0,   276,   294,   294,   340,   295,     0,
    1442      295,     0,   294,   736,   740,   738,   536,   294,   547,   255,
    1443      263,   309,     0,     2,   537,   294,   501,   337,   338,   283,
    1444      352,   359,     0,   294,     2,   385,   294,   373,     0,     0,
    1445      379,   730,     0,   751,   400,     0,   478,   502,   252,   253,
    1446      522,   294,   437,     0,   294,   237,     0,     2,   239,     0,
    1447      295,     0,   257,     2,   258,   278,     0,     0,     2,   294,
    1448      547,   294,   488,   490,   489,     0,     0,   753,     0,   294,
    1449        0,   294,   492,   294,   562,   560,   561,   559,     0,   554,
    1450      557,     0,     0,   294,    56,   294,    69,    52,   294,    62,
    1451      294,   294,    50,    51,    64,     2,   127,     0,     0,   449,
    1452        0,   448,   111,   294,    54,    55,    17,     0,    29,    30,
    1453       35,     2,     0,    35,   117,   118,   119,   120,   121,   122,
    1454      123,   124,   125,   126,     0,     0,    53,     0,     0,     0,
     1399     295,   295,   316,   314,   317,   315,   318,   319,   301,   303,
     1400     302,     0,   304,   330,   322,   327,   325,   326,   324,   323,
     1401     328,   329,   334,   331,   332,   333,   550,   550,   550,     0,
     1402       0,     0,   295,   221,   305,   320,   321,     7,   361,     0,
     1403       8,    14,    15,    65,     0,     2,    63,    64,   568,     9,
     1404     295,   528,   526,   248,     3,   456,     3,   261,     0,     3,
     1405       3,     3,   249,     3,     0,     0,     0,   296,   297,   299,
     1406     295,   308,   311,   313,   342,   287,   335,   340,   288,   350,
     1407     289,   357,   354,   364,     0,     0,   365,   290,   476,   480,
     1408       3,     3,     0,     2,   522,   527,   532,   300,     0,     0,
     1409     550,   580,   550,     2,   591,   592,   593,   295,     0,   734,
     1410     735,     0,    12,     0,    13,   295,   271,   272,     0,   296,
     1411     291,   292,   293,   294,   529,   306,   394,   551,   552,   372,
     1412     373,    12,   447,   448,    11,   443,   446,     0,   506,   501,
     1413     492,   447,   448,     0,     0,   531,   222,     0,   295,     0,
     1414       0,     0,     0,     0,     0,     0,     0,   295,   295,     2,
     1415       0,   736,   296,   585,   597,   740,   733,   731,   738,     0,
     1416       0,     0,   255,     2,     0,   535,   441,   442,   440,     0,
     1417       0,     0,     0,   550,     0,   637,   638,     0,     0,   548,
     1418     544,   550,   565,   550,   550,   546,     2,   545,   550,   604,
     1419     550,   550,   607,     0,     0,     0,   295,   295,   314,   362,
     1420       2,   295,   262,   298,   309,   343,   355,   481,     0,     2,
     1421       0,   456,   263,   296,   336,   351,   358,   477,     0,     2,
     1422       0,   312,   337,   344,   345,     0,   352,   356,   359,   363,
     1423     448,   295,   295,   367,   371,     0,   396,   478,   482,     0,
     1424       0,     0,     1,   295,     2,   533,   579,   581,   295,     2,
     1425     744,   296,   747,   548,   548,     0,   296,     0,     0,   274,
     1426     550,   546,     2,   295,     0,     0,   295,   553,     2,   504,
     1427       2,   557,     0,     0,     0,     0,     0,     0,    18,    58,
     1428       4,     5,     6,    16,     0,     0,   295,     2,    66,    67,
     1429      68,    69,    48,    19,    49,    22,    47,    70,   295,     0,
     1430      73,    77,    80,    83,    88,    91,    93,    95,    97,    99,
     1431     101,   106,   498,   754,   454,   497,     0,   452,   453,     0,
     1432     569,   584,   587,   590,   596,   599,   602,   361,     0,     2,
     1433     742,     0,   295,   745,     2,    63,   295,     3,   428,     0,
     1434     436,   296,   295,   308,   335,   288,   350,   357,     3,     3,
     1435     410,   414,   424,   429,   476,   295,   430,   709,   710,   295,
     1436     431,   433,   295,     2,   586,   598,   732,     2,     2,   250,
     1437       2,   461,     0,   459,   458,   457,   142,     2,     2,   252,
     1438       2,     2,   251,     2,   282,     2,   283,     0,   281,     0,
     1439       0,     0,     0,     0,     0,     0,     0,     0,   570,   609,
     1440       0,   456,     2,   564,   573,   663,   566,   567,   536,   295,
     1441       2,   603,   612,   605,   606,     0,   277,   295,   295,   341,
     1442     296,     0,   296,     0,   295,   737,   741,   739,   537,   295,
     1443     548,   256,   264,   310,     0,     2,   538,   295,   502,   338,
     1444     339,   284,   353,   360,     0,   295,     2,   386,   295,   374,
     1445       0,     0,   380,   731,     0,   752,   401,     0,   479,   503,
     1446     253,   254,   523,   295,   438,     0,   295,   238,     0,     2,
     1447     240,     0,   296,     0,   258,     2,   259,   279,     0,     0,
     1448       2,   295,   548,   295,   489,   491,   490,     0,     0,   754,
     1449       0,   295,     0,   295,   493,   295,   563,   561,   562,   560,
     1450       0,   555,   558,     0,     0,   295,    55,   295,    70,    50,
     1451     295,    61,   295,   295,    53,    54,     2,   128,     0,     0,
     1452     450,     0,   449,   112,   295,    17,     0,    29,    30,    35,
     1453       2,     0,    35,   118,   119,   120,   121,   122,   123,   124,
     1454     125,   126,   127,     0,     0,    51,    52,     0,     0,     0,
    14551455       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1456        0,     0,     0,     0,     0,     0,     0,   108,     2,   648,
    1457      454,   645,   549,   549,   653,   482,   294,     2,   587,   588,
    1458        0,   599,   600,     0,     2,   742,   745,   111,   294,     2,
    1459      294,     0,   710,   295,   714,   705,   706,   712,     0,     2,
    1460        2,   670,   549,   753,   619,   549,   549,   753,   549,   633,
    1461      549,   549,   684,   436,   667,   549,   549,   675,   682,   294,
    1462      431,   295,     0,     0,   294,   720,   295,   725,   753,   717,
    1463      294,   722,   753,   294,   294,   294,     0,   111,     0,    18,
    1464        5,     2,     0,    19,     0,   461,   751,     0,     0,   467,
    1465      241,     0,   294,     0,     0,     0,   547,   571,   575,   577,
    1466      607,   610,   614,   617,   570,   609,     0,   284,   660,     0,
    1467      294,   277,     0,     0,     0,     0,   275,     2,     0,   259,
    1468      538,   294,     0,     0,     0,     0,   294,   294,     0,     0,
    1469      694,   383,   386,   390,   549,   390,   699,   389,   691,   549,
    1470      549,   365,   374,   382,   375,   549,   377,   380,   294,   752,
    1471        0,     0,   398,     0,   295,     3,   416,     3,   420,   419,
    1472      593,     0,   533,   294,     3,     3,   294,   435,   295,     3,
    1473      429,   430,     2,     0,     0,     0,   487,   306,   294,   483,
    1474      485,     3,     2,     2,     0,   504,     3,     0,   556,   129,
    1475        0,     0,   222,     0,     0,     0,     2,     0,     0,    36,
    1476        0,     0,   111,   294,    20,     0,    21,     0,   694,   450,
    1477        0,   109,     3,     2,    27,     2,     0,    33,     0,     2,
    1478       25,     0,   106,   107,    73,    74,    75,    77,    78,    80,
    1479       81,    85,    86,    83,    84,    88,    89,    91,    93,    95,
    1480       97,    99,     0,     0,   754,   294,     0,     0,     0,   649,
    1481      650,   646,   647,   499,   498,   294,     0,     3,   294,   716,
    1482      294,   721,   295,   294,   294,   294,   664,   707,   663,     2,
    1483      294,     0,     0,     0,     0,     0,     0,     0,     0,   685,
    1484        0,   671,   622,   638,   672,     2,   618,   625,   433,   620,
    1485      621,   434,     2,   632,   641,   634,   635,   668,   669,   683,
    1486      711,   715,   713,   753,   268,     2,   747,     2,   424,   719,
    1487      724,   425,     0,   403,     3,     3,     3,     3,   455,     3,
    1488        0,     2,   470,   466,   752,     0,   462,   469,     2,   465,
    1489      468,     0,   294,   242,   264,     3,   272,   274,     0,   455,
    1490        2,   573,   574,     2,   612,   613,     0,   661,   539,     3,
    1491      346,   345,   348,   347,   294,   540,     0,   541,   294,   376,
    1492      378,     2,     0,     0,     0,     0,   104,   392,   695,   696,
    1493      387,   391,   388,   692,   693,   381,   385,   294,   400,   394,
    1494      401,   751,     0,     0,   438,   240,     0,     0,     3,     2,
    1495      670,   431,     0,   529,     0,   753,   491,     0,   294,   294,
    1496      294,     0,   553,   555,   130,     0,     0,   215,     0,     0,
    1497        0,   223,   224,    57,     0,    63,   294,     0,    61,    60,
    1498        0,   128,   695,   460,    70,    71,   110,   115,     3,   109,
    1499        0,     0,     0,    24,    35,     3,     0,    32,   102,     0,
    1500        3,   652,   656,   659,   651,     3,   594,     3,   718,   723,
    1501        2,   294,     3,     3,   295,     0,     3,   624,   628,   631,
    1502      640,   674,   678,   681,   294,     3,   623,   639,   673,   294,
    1503      294,   426,   294,   294,   748,     0,     0,     0,     0,   256,
    1504        0,   104,     0,     3,     3,     0,   463,     0,   459,     0,
    1505        0,   245,   294,     0,     0,   129,     0,     0,     0,     0,
    1506        0,   129,     0,     0,   109,   109,     2,     0,     0,     0,
    1507        3,   131,   132,     2,   143,   133,   134,   135,   136,   137,
    1508      138,   145,   147,     0,     0,     0,   285,   294,   294,   549,
    1509        0,   542,   294,   111,   698,   702,   704,   697,   384,   368,
    1510      399,     0,   581,     2,   666,   665,     0,   671,     2,   484,
    1511      486,   506,     3,   514,   515,     0,     2,   510,     3,     3,
    1512        0,     0,   558,   222,     0,     0,     0,   222,     0,     0,
    1513        3,    37,   751,   109,     0,     3,   663,    42,     3,    40,
    1514        3,    34,     0,     3,   101,   103,     0,     2,   654,   655,
    1515        0,     0,   294,     0,     0,     0,     3,   640,     0,     2,
    1516      626,   627,     2,   642,     2,   676,   677,     0,     0,     3,
    1517        0,     3,     3,     3,     3,   411,   410,   414,     2,     2,
    1518      750,   749,   112,     0,     0,     0,     0,     3,   464,     3,
    1519        0,   243,   146,     3,   295,   294,     0,     0,     0,     0,
    1520        2,   191,     0,   189,     0,     0,     0,     0,     0,     0,
    1521        0,     0,   111,     0,   549,   151,   148,   294,     0,     0,
    1522      267,   279,     3,     3,   548,   615,   369,     2,   700,   701,
    1523      397,   294,   266,   294,     0,   517,   494,   294,     0,     0,
    1524      493,   508,     0,     0,     0,   216,     0,   225,    58,   109,
    1525        0,     0,   116,   113,     0,     0,     0,     0,     0,     0,
    1526       23,     0,   657,   294,   582,   265,   726,   727,   728,     0,
    1527      679,   294,   294,   294,     3,     3,     0,   687,     0,     0,
    1528        0,     0,   294,   294,     3,   546,   471,   472,     0,     0,
    1529      246,   295,     0,     0,     0,     0,   294,   192,   190,     0,
    1530      187,   193,     0,     0,     0,     0,   197,   200,   198,   194,
    1531        0,   195,    35,   129,   144,   142,   244,     0,     0,   294,
    1532      418,   422,   421,     0,   511,     2,   512,     2,   513,   507,
    1533      294,   228,     0,   226,     0,   228,     3,   663,    31,   114,
    1534        2,    45,     2,    43,    41,    28,   112,    26,     3,   729,
    1535        3,     3,     3,     0,     0,   686,   688,   629,   643,   269,
    1536        2,   408,     3,   407,     0,   474,   471,   129,     0,     0,
    1537      129,     3,     0,   129,   188,     0,     2,     2,   209,   199,
    1538        0,     0,     0,     0,   140,   576,   616,     3,     2,     0,
    1539        0,     2,   229,     0,     0,   217,     0,     0,     0,     0,
    1540        0,     0,     0,     0,     0,   689,   690,   294,     0,   473,
    1541      152,     0,     0,     2,   165,   129,   154,     0,   182,     0,
    1542      129,     0,     2,   156,     0,     2,     0,     2,     2,     2,
    1543      196,    32,     0,   294,   516,   518,   509,     0,     0,     0,
    1544        0,   114,    38,     3,     3,   658,   630,   644,   680,   412,
    1545      129,   158,   161,     0,   160,   164,     3,   167,   166,     0,
    1546      129,   184,   129,     3,     0,   294,     0,   294,     0,     2,
    1547        0,     2,   139,   703,     2,   230,   231,     0,   227,   218,
    1548        0,     0,     0,   153,     0,     0,   163,   233,   168,     2,
    1549      235,   183,     0,   186,   172,   201,     3,   210,   214,   203,
    1550        3,     0,   294,     0,   294,     0,     0,     0,    39,    46,
    1551       44,   159,   162,   129,     0,   169,   294,   129,   129,     0,
    1552      173,     0,     0,   694,   211,   212,   213,     0,   202,     3,
    1553      204,     3,   294,   219,   232,   149,   170,   155,   129,   236,
    1554      185,   180,   178,   174,   157,   129,     0,   695,     0,     0,
    1555        0,     0,   150,   171,   181,   175,   179,   178,   176,     3,
    1556        3,     0,     0,   495,   177,   205,   207,     3,     3,   206,
    1557      208
     1456       0,     0,     0,     0,     0,     0,     0,   109,     2,   649,
     1457     455,   646,   550,   550,   654,   483,   295,     2,   588,   589,
     1458       0,   600,   601,     0,     2,   743,   746,   112,   295,     0,
     1459       2,   711,   296,   715,   706,   707,   713,     0,     2,     2,
     1460     671,   550,   754,   620,   550,   550,   754,   550,   634,   550,
     1461     550,   685,   437,   668,   550,   550,   676,   683,   295,   432,
     1462     296,     0,     0,   295,   721,   296,   726,   754,   718,   295,
     1463     723,   754,   295,   295,   295,     0,   112,     0,    18,     5,
     1464       2,     0,    19,     0,   462,   752,     0,     0,   468,   242,
     1465       0,   295,     0,     0,     0,   548,   572,   576,   578,   608,
     1466     611,   615,   618,   571,   610,     0,   285,   661,     0,   295,
     1467     278,     0,     0,     0,     0,   276,     2,     0,   260,   539,
     1468     295,     0,     0,     0,     0,   295,   295,     0,     0,   695,
     1469     384,   387,   391,   550,   391,   700,   390,   692,   550,   550,
     1470     366,   375,   383,   376,   550,   378,   381,   295,   753,     0,
     1471       0,   399,     0,   296,     3,   417,     3,   421,   420,   594,
     1472       0,   534,   295,    63,     3,   295,   436,   296,     3,   430,
     1473     431,     2,     0,     0,     0,   488,   307,   295,   484,   486,
     1474       3,     2,     2,     0,   505,     3,     0,   557,   130,     0,
     1475       0,   223,     0,     0,     0,     2,     0,     0,    36,     0,
     1476       0,   112,   295,    20,     0,    21,     0,   695,   451,     0,
     1477     110,     3,     2,    27,     2,     0,    33,     0,     2,    25,
     1478       0,   107,   108,    74,    75,    76,    78,    79,    81,    82,
     1479      86,    87,    84,    85,    89,    90,    92,    94,    96,    98,
     1480     100,     0,     0,   755,   295,     0,     0,     0,   650,   651,
     1481     647,   648,   500,   499,   295,     0,   295,   717,   295,   722,
     1482     296,   295,   665,   295,   295,   708,   664,     2,   295,     0,
     1483       0,     0,     0,     0,     0,     0,     0,   686,     0,   672,
     1484     623,   639,   673,     2,   619,   626,   434,   621,   622,   435,
     1485       2,   633,   642,   635,   636,   669,   670,   684,   712,   716,
     1486     714,   754,   269,     2,   748,     2,   425,   720,   725,   426,
     1487       0,   404,     3,     3,     3,     3,   456,     3,     0,     2,
     1488     471,   467,   753,     0,   463,   470,     2,   466,   469,     0,
     1489     295,   243,   265,     3,   273,   275,     0,   456,     2,   574,
     1490     575,     2,   613,   614,     0,   662,   540,     3,   347,   346,
     1491     349,   348,   295,   541,     0,   542,   295,   377,   379,     2,
     1492       0,     0,     0,     0,   105,   393,   696,   697,   388,   392,
     1493     389,   693,   694,   382,   386,   295,   401,   395,   402,   752,
     1494       0,     0,   439,   241,     0,     0,     3,     2,   671,   432,
     1495       0,   530,     0,   754,   492,     0,   295,   295,   295,     0,
     1496     554,   556,   131,     0,     0,   216,     0,     0,     0,   224,
     1497     225,    56,     0,    62,   295,     0,    60,    59,     0,   129,
     1498     696,   461,    71,    72,   111,   116,     3,   110,     0,     0,
     1499       0,    24,    35,     3,     0,    32,   103,     0,     3,   653,
     1500     657,   660,   652,     3,   595,     3,   719,   724,     2,    63,
     1501     295,     3,     3,   296,     0,     3,   625,   629,   632,   641,
     1502     675,   679,   682,   295,     3,   624,   640,   674,   295,   295,
     1503     427,   295,   295,   749,     0,     0,     0,     0,   257,     0,
     1504     105,     0,     3,     3,     0,   464,     0,   460,     0,     0,
     1505     246,   295,     0,     0,   130,     0,     0,     0,     0,     0,
     1506     130,     0,     0,   110,   110,    18,     2,     0,     0,     3,
     1507     132,   133,     2,   144,   134,   135,   136,   137,   138,   139,
     1508     146,   148,     0,     0,     0,   286,   295,   295,   550,     0,
     1509     543,   295,   112,   699,   703,   705,   698,   385,   369,   400,
     1510       0,   582,     2,   667,   666,     0,   672,     2,   485,   487,
     1511     507,     3,   515,   516,     0,     2,   511,     3,     3,     0,
     1512       0,   559,   223,     0,     0,     0,   223,     0,     0,     3,
     1513      37,   752,   110,     0,     3,   664,    42,     3,    40,     3,
     1514      34,     0,     3,   102,   104,     0,     2,   655,   656,     0,
     1515       0,   295,     0,     0,     0,     3,   641,     0,     2,   627,
     1516     628,     2,   643,     2,   677,   678,     0,     0,    63,     0,
     1517       3,     3,     3,     3,   412,   411,   415,     2,     2,   751,
     1518     750,   113,     0,     0,     0,     0,     3,   465,     3,     0,
     1519     244,   147,     3,   296,   295,     0,     0,     0,     0,     2,
     1520       0,   192,     0,   190,     0,     0,     0,     0,     0,     0,
     1521       0,   550,   112,     0,   152,   149,   295,     0,     0,   268,
     1522     280,     3,     3,   549,   616,   370,     2,   701,   702,   398,
     1523     295,   267,   295,     0,   518,   495,   295,     0,     0,   494,
     1524     509,     0,     0,     0,   217,     0,   226,    57,   110,     0,
     1525       0,   117,   114,     0,     0,     0,     0,     0,     0,    23,
     1526       0,   658,   295,   583,   266,   727,   728,   729,     0,   680,
     1527     295,   295,   295,     3,     3,     0,   688,     0,     0,     0,
     1528       0,   295,   295,     3,   547,   472,   473,     0,     0,   247,
     1529     296,     0,     0,     0,     0,   295,   193,   191,   188,     0,
     1530     194,     0,     0,     0,     0,   198,   201,   199,   195,     0,
     1531     196,   130,    35,   145,   143,   245,     0,     0,   295,   419,
     1532     423,   422,     0,   512,     2,   513,     2,   514,   508,   295,
     1533     229,     0,   227,     0,   229,     3,   664,    31,   115,     2,
     1534      45,     2,    43,    41,    28,   113,    26,     3,   730,     3,
     1535       3,     3,     0,     0,   687,   689,   630,   644,   270,     2,
     1536     409,     3,   408,     0,   475,   472,   130,     0,     0,   130,
     1537       3,     0,   130,   189,     0,     2,     2,   210,   200,     0,
     1538       0,     0,   141,     0,   577,   617,     3,     2,     0,     0,
     1539       2,   230,     0,     0,   218,     0,     0,     0,     0,     0,
     1540       0,     0,     0,     0,   690,   691,   295,     0,   474,   153,
     1541       0,     0,     2,   166,   130,   155,     0,   183,     0,   130,
     1542       0,     2,   157,     0,     2,     0,     2,     2,     2,   197,
     1543      32,     0,   295,   517,   519,   510,     0,     0,     0,     0,
     1544     115,    38,     3,     3,   659,   631,   645,   681,   413,   130,
     1545     159,   162,     0,   161,   165,     3,   168,   167,     0,   130,
     1546     185,   130,     3,     0,   295,     0,   295,     0,     2,     0,
     1547       2,   140,   704,     2,   231,   232,     0,   228,   219,     0,
     1548       0,     0,   154,     0,     0,   164,   234,   169,     2,   236,
     1549     184,     0,   187,   173,   202,     3,   211,   215,   204,     3,
     1550       0,   295,     0,   295,     0,     0,     0,    39,    46,    44,
     1551     160,   163,   130,     0,   170,   295,   130,   130,     0,   174,
     1552       0,     0,   695,   212,   213,   214,     0,   203,     3,   205,
     1553       3,   295,   220,   233,   150,   171,   156,   130,   237,   186,
     1554     181,   179,   175,   158,   130,     0,   696,     0,     0,     0,
     1555       0,   151,   172,   182,   176,   180,   179,   177,     3,     3,
     1556       0,     0,   496,   178,   206,   208,     3,     3,   207,   209
    15581557};
    15591558
     
    15611560static const yytype_int16 yydefgoto[] =
    15621561{
    1563       -1,   840,   475,   302,    46,   132,   133,   303,   304,   305,
    1564      306,   786,   787,  1148,  1149,   307,   308,   309,   310,   311,
    1565      312,   313,   314,   315,   316,   317,   318,   319,   320,  1052,
    1566      526,   997,   322,   998,   555,   974,  1079,  1545,  1081,  1082,
    1567     1083,  1084,  1546,  1085,  1086,  1462,  1463,  1424,  1425,  1426,
    1568     1524,  1525,  1529,  1530,  1565,  1566,  1087,  1382,  1088,  1089,
    1569     1316,  1317,  1318,  1506,  1090,   144,   980,   981,   982,  1403,
    1570     1487,  1498,  1499,   476,   477,   902,   903,  1060,    49,    50,
    1571       51,    52,    53,   346,   157,    56,    57,    58,    59,    60,
    1572      348,    62,    63,   262,    65,    66,   273,   350,   351,    69,
    1573       70,    71,    72,   117,    74,   203,   353,   118,    77,   119,
    1574       79,    80,   462,    81,   456,   457,   458,   459,   701,   940,
    1575      702,    82,    83,   465,   463,   722,   882,   883,   356,   357,
    1576      725,   726,   727,   358,   359,   360,   361,   473,   340,   134,
    1577      135,   530,   324,   169,   655,   656,   657,   658,   659,    84,
    1578      120,    86,   496,   497,   966,   498,   276,   502,   325,    87,
    1579      136,   137,    88,  1340,  1126,  1127,  1128,  1129,    89,    90,
    1580      743,    91,   272,    92,    93,   186,  1054,   689,   411,   124,
    1581       94,   508,   509,   510,   187,   267,   189,   190,   191,   268,
    1582       97,    98,    99,   100,   101,   102,   103,   194,   195,   196,
    1583      197,   198,   852,   614,   615,   616,   617,   199,   619,   620,
    1584      621,   580,   581,   582,   583,   706,   104,   623,   624,   625,
    1585      626,   627,   628,   939,   708,   709,   710,   604,   364,   365,
    1586      366,   367,   326,   163,   106,   107,   108,   369,   720,   577
     1562      -1,   838,   477,   302,    48,   135,   136,   303,   304,   305,
     1563     306,   785,   786,  1147,  1148,   307,   382,   309,   310,   311,
     1564     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
     1565    1051,   527,   995,   323,   996,   554,   972,  1078,  1544,  1080,
     1566    1081,  1082,  1083,  1545,  1084,  1085,  1461,  1462,  1423,  1424,
     1567    1425,  1523,  1524,  1528,  1529,  1564,  1565,  1086,  1381,  1087,
     1568    1088,  1315,  1316,  1317,  1505,  1089,   147,   978,   979,   980,
     1569    1402,  1486,  1497,  1498,   478,   479,   900,   901,  1059,    52,
     1570      53,    54,    55,    56,   348,   160,    59,    60,    61,    62,
     1571      63,   350,    65,    66,   266,    68,    69,   276,   352,   353,
     1572      72,    73,    74,    75,   120,    77,   206,   355,   121,    80,
     1573     122,    82,    83,   464,    84,   458,   459,   460,   461,   700,
     1574     938,   701,    85,    86,   467,   465,   721,   880,   881,   358,
     1575     359,   724,   725,   726,   360,   361,   362,   363,   475,   341,
     1576     137,   138,   531,   325,   172,   654,   655,   656,   657,   658,
     1577      87,   123,    89,   498,   499,   964,   500,   279,   504,   326,
     1578      90,   139,   140,    91,  1339,  1125,  1126,  1127,  1128,    92,
     1579      93,   742,    94,   275,    95,    96,   189,  1053,   688,   413,
     1580     127,    97,   510,   511,   512,   190,   270,   192,   193,   194,
     1581     271,   100,   101,   102,   103,   104,   105,   106,   197,   198,
     1582     199,   200,   201,   850,   613,   614,   615,   616,   202,   618,
     1583     619,   620,   580,   581,   582,   583,   705,   107,   622,   623,
     1584     624,   625,   626,   627,   937,   707,   708,   709,   603,   366,
     1585     367,   368,   369,   327,   166,   109,   110,   111,   371,   719,
     1586     577
    15871587};
    15881588
    15891589/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15901590   STATE-NUM.  */
    1591 #define YYPACT_NINF -1332
     1591#define YYPACT_NINF -1355
    15921592static const yytype_int16 yypact[] =
    15931593{
    1594     3506,  8076, -1332,    12, -1332, -1332, -1332, -1332, -1332, -1332,
    1595    -1332,    61, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332,
    1596    -1332, -1332, -1332, -1332, -1332, -1332,   102,   102,   102,  1011,
    1597     1062,    86,  5961,   228, -1332, -1332, -1332, -1332, -1332,   138,
    1598    -1332, -1332, -1332,   684,   144,  9470, -1332, -1332, -1332, -1332,
    1599    -1332, -1332,   190,   182, -1332,  1658, -1332, -1332, -1332, -1332,
    1600      201,  1834,   303,    32,  4928, -1332, -1332,  9508,  1650, -1332,
    1601    -1332, -1332,   615,   401,  4443,   184,   589,   615,  1225, -1332,
    1602    -1332,   848,   938, -1332,   615,  1259, -1332,   301, -1332,   486,
    1603      503, -1332, -1332, -1332, -1332,   316,   182,   102, -1332,   102,
    1604    -1332, -1332, -1332, -1332,  9240,  1658, -1332, -1332,  1658, -1332,
    1605     9354,   391, -1332, -1332, -1332,  1948,  9876, -1332,   810,   810,
    1606      810, -1332, -1332, -1332,   102, -1332, -1332, -1332,   426,   447,
    1607      456, -1332, -1332, -1332,   477, -1332, -1332, -1332, -1332, -1332,
    1608      485,   495, -1332, -1332,    36,  8974,  2459,   272,   545,   579,
    1609      623,   632,   671,   733,  8777,  7372,   596,   719, -1332,  9546,
    1610    -1332, -1332, -1332, -1332,   739, -1332,   209,  3245,  3245, -1332,
    1611      760,   213, -1332, -1332, -1332, -1332,   770,   237,   353,   362,
    1612      102,   755, -1332, -1332,  1834,  1803,   846, -1332,    70, -1332,
    1613      102,   102,   182, -1332, -1332,    98, -1332,   102,   102, -1332,
    1614     2479,   820,   843,   810,  5405, -1332, -1332,   844,  9470, -1332,
    1615    -1332,   615, -1332, -1332, -1332,   182, -1332,  1658,   190, -1332,
    1616     7926, -1332,   810,   810,   810,   182, -1332,  1011, -1332,  2880,
    1617    -1332, -1332,   827,   810, -1332,   810, -1332,   138,  8974,  8891,
    1618      857, -1332,  1062,   864,   810, -1332,  1011,   870,   879, -1332,
    1619     5961,   735, -1332, -1332, -1332,  9437, -1332, -1332,  3894, -1332,
    1620      846,    69,  9876,  6310,  1948,  2479, -1332,   114, -1332, -1332,
    1621     9354,  1658,   875, 11374, -1332, -1332,   546, -1332, 11116,   886,
    1622      926, 10861,   905, 10919, 10938, -1332,   919, -1332, -1332, -1332,
    1623    -1332, 10996, 10996,   735,  8632,   928, 10919,  9088, -1332, -1332,
    1624    -1332, -1332, -1332, -1332,   949, -1332,   840,  2531, 10919, -1332,
    1625      516,   336,   425,   270,   704,   934,   936,   960,   997,    52,
    1626    -1332, -1332,   974,   356, -1332,   290, -1332, -1332,  2459, -1332,
    1627    -1332,   600,   996, -1332,   701,   996,  1007,   138, -1332, -1332,
    1628     1010,  9240, -1332,  1018,  8746, -1332, -1332,  1849,  1084,  8347,
    1629     5405,   615, -1332,   615,   810,   810, -1332, -1332, -1332, -1332,
    1630    -1332, -1332,   810,  9914,  1658, -1332, -1332,  9987,  1975, -1332,
    1631     9012, -1332, -1332, -1332, -1332, -1332, -1332, -1332,  1030,  3059,
    1632    10919, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332,
    1633    -1332, -1332, -1332, -1332, -1332,  1948, -1332,   773,  1012,  1034,
    1634     1040,   889,  1045,  1051,  1053,  1803, -1332, -1332,  1063,   190,
    1635     1064, -1332, -1332,  1066, -1332, -1332, -1332,  9437, -1332, -1332,
    1636    -1332, -1332, -1332,  2479, -1332,  8974,  8974, -1332,   810,  1948,
    1637     6923,  1658,  8420, -1332, -1332, -1332, -1332,  9437,    69, -1332,
    1638    -1332,   615,   182, -1332, -1332,  9437, -1332,  3625, -1332, -1332,
    1639      810,   810,   464, 10025,  1068,   907,  9695, -1332,   437,   475,
    1640     1062, -1332,  1067,  1069,  1047,  1070,   810, -1332, -1332, -1332,
    1641    -1332, 10283, -1332,   522,  6793, -1332,   182,  1074, -1332,  1948,
    1642    11198,  6368, -1332, -1332, -1332, -1332,   939,  2479, -1332,  8493,
    1643      846,  5374, -1332, -1332, -1332,   828,   610,   974,  1062, 11374,
    1644      861,  9354, -1332, 11374, -1332, -1332, -1332, -1332,   618, -1332,
    1645     1073,   926,   326,  8632, -1332, 10025, -1332, -1332,  8632, -1332,
    1646     8860,  8632, -1332, -1332, -1332,  1077, -1332,   619,  1082,   630,
    1647     1087, -1332,  5066,  7012, -1332, -1332, -1332,    47, -1332, -1332,
    1648    10784, -1332,   474, 10784, -1332, -1332, -1332, -1332, -1332, -1332,
    1649    -1332, -1332, -1332, -1332,  6310,  6310, -1332, 10919, 10919, 10919,
    1650    10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919,
    1651    10919, 10919, 10919, 10919, 10919,  4001,  6310, -1332,   356,   777,
    1652    -1332, -1332,   102,   102, -1332, -1332,  8974, -1332, -1332,  1066,
    1653      735, -1332,  1066, 10842, -1332, -1332, -1332,  6075,  7012,  1086,
    1654     9202,  1093, -1332, 10055, -1332, -1332,   739, -1332,  1094,   690,
    1655     1096,  1090,   157,   974, -1332,   102,   102,   974,   166, -1332,
    1656      102,   102,  1066, -1332, -1332,   102,   102, -1332,   996, 10137,
    1657     1658, 11343,   372,   531, 10137, -1332,  6678, -1332,   974, -1332,
    1658     9914, -1332,   285,  8042,  8042,  8042,  1658, -1332,  5183,  1085,
    1659      453,  1030,   955,  1095,  1097, -1332,  1099,  3245,   590, -1332,
    1660     1182,  1658,  8042,   735,  1948,   735,   846,   706,   996, -1332,
    1661    -1332,   806,   996, -1332, -1332, -1332,   926, -1332,   996,   182,
    1662    10283, -1332,   647,  1107,   688,  1108, -1332,  1109,   182, -1332,
    1663    -1332,  9437,   182,  1105,   497,   502, 10167,  7492,  1400, 10919,
    1664     1678, -1332, -1332,  1103,    62,  1103, -1332, -1332, -1332,   102,
    1665      102, -1332, -1332,  1062, -1332,   102, -1332, -1332,  8891,  1062,
    1666     1110, 10919, -1332,  1062, 11343, -1332, -1332,  1113, -1332, -1332,
    1667    -1332,   735, -1332, 11271, 10919, -1332,  8042,   718,  8347, -1332,
    1668    -1332,   739,  1114,  1115,   828,  2655, -1332, -1332, 11374, -1332,
    1669    -1332,  1116, -1332, -1332,  1122, -1332,  1116,  1123, 11116,  6310,
    1670      163,  1092,    54,  1131,  1128,  1135,   928,  1130,  1138, -1332,
    1671     1140,  1141,  9733,  7132, -1332,  6310, -1332,   630,  1274, -1332,
    1672     5523,  6310,  1139, -1332, -1332,  1030,   695, -1332,  6310, -1332,
    1673    -1332,   741, -1332, -1332, -1332, -1332, -1332,   516,   516,   336,
    1674      336,   425,   425,   425,   425,   270,   270,   704,   934,   936,
    1675      960,   997, 10919,   754, -1332, 10283,  1150,  1151,  1153,   777,
    1676    -1332, -1332, -1332, -1332, -1332, 10283,   748, 10919,  8042, -1332,
    1677     9914, -1332,  7612,  9316,  9126,  7372, -1332, -1332, -1332,   690,
    1678    10283,   950,  1164,  1165,  1171,  1172,  1179,  1180,  1181, -1332,
    1679     3591,  1090, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332,
    1680    -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332,  1066,
    1681    -1332, -1332, -1332,   974, -1332, -1332, -1332, -1332, -1332, -1332,
    1682    -1332, -1332,  1183, -1332,  1184,  1187, -1332, -1332,   190,  1139,
    1683     5183, -1332, -1332, -1332,  3059,  1185, -1332, -1332, -1332, -1332,
    1684    -1332,  1062,  6532,  1270, -1332, -1332, -1332, -1332,  1173,   190,
    1685    -1332, -1332,  1066, -1332, -1332,  1066,   152,  1066, -1332, -1332,
    1686    -1332, -1332, -1332, -1332,  9584, -1332,   182, -1332,  8891, -1332,
    1687    -1332,  1193,   795,  1199,  1200,  1204, -1332, -1332,  1678, -1332,
    1688    -1332, -1332, -1332, -1332, -1332, -1332,   907,  9763,  1047, -1332,
    1689    -1332,  1069,  1205,  1201, -1332, -1332,  1206,  1207, -1332,   718,
    1690     1989, -1332,   634, -1332,  2655,   974, -1332,  1211, 11374, 10205,
    1691     8974,  1214, -1332, -1332,  1212,  1217,  1213, -1332, 10919,   229,
    1692      205,  1215, -1332,  1202,   735,  1202,  7012,  6310, -1332, -1332,
    1693     1202, -1332,  1274,  3059, -1332, -1332, -1332, -1332,  1220,  6310,
    1694     1228,   735,  5183, -1332, 10784, -1332,   735, -1332, -1332,  6310,
    1695    -1332,   863,   996, -1332, -1332, -1332, -1332, -1332, -1332, -1332,
    1696     1030,  8746, -1332, -1332,  7732,  1219, -1332,   876,   996, -1332,
    1697      883,   896,   996, -1332,   810,  4775, -1332, -1332, -1332, 10283,
    1698    10283, -1332,  8420,  8420, -1332,  1221,  1226,  1233,  1235, -1332,
    1699     1234,   643,   137,  1139, -1332,   735, -1332,  3245, -1332,  6310,
    1700      517, -1332,  6892,  1245,  1249, 10726,  1253,  1258,   330,   380,
    1701      387,  6310,  1265,   182,  6310,  6310,  1256,   294,  1269,  1250,
    1702    -1332, -1332, -1332,  1277, -1332, -1332, -1332, -1332, -1332, -1332,
    1703    -1332, -1332, -1332,  1062,  1285,  6310, -1332, 10283, 10283,   102,
    1704     1287, -1332,  9845,  9622,   932,   996, -1332, -1332, -1332, -1332,
    1705    -1332,  1286, -1332, -1332, -1332, -1332,  1293,  1989, -1332, -1332,
    1706     1275, -1332,  1116, -1332, -1332,  1948,  1290, -1332, -1332, -1332,
    1707      749,  1292, -1332,    54,  1295, 10919,  1279,    54,    54,  1305,
    1708     1301, -1332,  1099,  6310,  1308,  1220,   605,    89,  1306, -1332,
    1709     1301, -1332,  1312,  1306, -1332, -1332,  1317, -1332, -1332,  1066,
    1710     1319,  1322,  7252,  1323,  1325,  1326, -1332, -1332,  1329, -1332,
    1711    -1332,  1066, -1332, -1332, -1332, -1332,  1066,  6310,  6310, 10919,
    1712     1330, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332,
    1713    -1332, -1332, -1332, 10919, 10919,  1332,  1335,  1306, -1332, -1332,
    1714     1062, -1332, -1332, -1332,  7853, 10205,  6310,  6310,  1394,  6310,
    1715    -1332, -1332,  1321, -1332,  1324,  6310,  1327,  1331,  6310,  1013,
    1716     1333,    97,  8265,  1262,   102, -1332, -1332,  6532,  1334,   537,
    1717    -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332,  1066,
    1718    -1332, 10544, -1332,  8493,  1345, -1332, -1332, 10205,   562,   563,
    1719    -1332,  1343,  1344,   926,  1352, -1332,   450, -1332, -1332,  6310,
    1720     1355,  1349, -1332, -1332,  1356,   543,   613,   735,  1357,  1358,
    1721    -1332,  1361, -1332, 10283, -1332, -1332, -1332, -1332, -1332,  1365,
    1722    -1332, 10283, 10283, 10283, -1332, -1332,  1367, -1332,  1368,  1371,
    1723     1372,   668,  8115,  8231, -1332, -1332,   457, -1332,  1376,  1378,
    1724    -1332,  8566,   750,   782,  1387,   793,  6762, -1332, -1332,   598,
    1725    -1332, -1332,   803,  1388,  1393,   182,  1445,   882, -1332, -1332,
    1726     6310, -1332, 10784, 10726, -1332, -1332, -1332,  1396,  1404, 10283,
    1727    -1332, -1332, -1332,  1401, -1332, -1332, -1332, -1332, -1332, -1332,
    1728    10205,   926,   254, -1332,  1384,   926,  1220,   366, -1332, -1332,
    1729    -1332, -1332, -1332, -1332, -1332, -1332,  1405, -1332, -1332, -1332,
    1730    -1332, -1332, -1332,  1406,  1409, -1332, -1332, -1332, -1332, -1332,
    1731    -1332, -1332,  1414, -1332,  1413, -1332, -1332, 10726,    84,  6310,
    1732    10726, -1332,  1417,  6310, -1332,    99,  1433,  1434, -1332, -1332,
    1733     1422,  1425,  1408,   852, -1332, -1332, -1332, -1332, -1332,  1658,
    1734     1948,  1421,   949,   918, 10919, -1332,   832,  1426,  6310,   735,
    1735      735,  1427,  1431,  1440,  1441, -1332, -1332,  8420,  1428, -1332,
    1736     1501, 10919,  1437, -1332, -1332, 10637, -1332,   845, -1332,  1424,
    1737    10726,  1436, -1332, -1332,  1460, -1332,  1461, -1332,  1476,  1481,
    1738    -1332,  1446,  1471, 10205, -1332, -1332, -1332,   926,   735,  1472,
    1739     1452,  1468, -1332,  1306,  1306, -1332, -1332, -1332, -1332, -1332,
    1740    10726,   295, -1332,   940, -1332, -1332,  5671, -1332, -1332,  1454,
    1741     6310, -1332,  6310,  5671,   182, 10025,   182, 10025,  1478, -1332,
    1742     1482, -1332, -1332, -1332,  1480,   949, -1332,   850, -1332, -1332,
    1743     6310,  1479,  1487, -1332, 10919, 10919, -1332, -1332,  1054,   123,
    1744    -1332, -1332,  1465, -1332,  1054, -1332, -1332,  1818,   735, -1332,
    1745    -1332,   182, 10025,   182, 10025,  1492,  1474,   735, -1332, -1332,
    1746    -1332, -1332, -1332, 10637,  1488,  1054,  6242,  6310, 10548,  1495,
    1747     1054,  1502,  1818,  2347, -1332, -1332, -1332,  1505, -1332, -1332,
    1748    -1332, -1332,  8974, -1332, -1332, -1332, 10415, -1332, 10637, -1332,
    1749    -1332,  1484, 10322, -1332, -1332, 10548,   182,  2347,   182,  1509,
    1750     1510,   853, -1332, 10415, -1332, -1332, -1332, 10322, -1332, -1332,
    1751    -1332,   182,   182, -1332, -1332, -1332, -1332, -1332, -1332, -1332,
    1752    -1332
     1594    6526, 10132, -1355,   -28, -1355, -1355, -1355, -1355, -1355, -1355,
     1595   -1355,    11, -1355, -1355, -1355, -1355, -1355, -1355, -1355, -1355,
     1596   -1355, -1355, -1355, -1355, -1355, -1355,   124,   124,   124,  1122,
     1597    1178,   105,  7752,   206, -1355, -1355, -1355, -1355, -1355,   125,
     1598   -1355, -1355, -1355, -1355,   698,   190, -1355, -1355, -1355, -1355,
     1599    9742, -1355, -1355, -1355, -1355,   293,   199, -1355,  1161, -1355,
     1600   -1355, -1355, -1355,   216,  2006,   341,   106,  7869, -1355, -1355,
     1601    9852,   758, -1355, -1355, -1355,   704,   346,  7545,   680,   713,
     1602     704,   967, -1355, -1355,   498,   800, -1355,   704,  1060, -1355,
     1603     248, -1355,   421,   449, -1355, -1355, -1355, -1355,   290,   199,
     1604     124, -1355,   124, -1355, -1355, -1355, -1355, 10443,  1161, -1355,
     1605   -1355,  1161, -1355,   279, -1355, 10553, -1355, -1355,  2175, 10583,
     1606   -1355,   774,   774,   774, -1355, -1355, -1355,   124, -1355, -1355,
     1607   -1355,   350,   392,   395, -1355, -1355, -1355,   403, -1355, -1355,
     1608   -1355, -1355, -1355,   439,   468, -1355, -1355,    66,  9208,  3295,
     1609     571,   369,   448,   481,   484,   491,   516, 10022,  7154,   536,
     1610     559, -1355,  9882, -1355, -1355, -1355, -1355,   562, -1355,   184,
     1611    3734,  3734, -1355,   579,   187, -1355, -1355, -1355, -1355,   597,
     1612     328,   353,   423,   124,   608, -1355, -1355,  2006,  2873,   686,
     1613   -1355,    61, -1355,   124,   124,   199, -1355, -1355,    96, -1355,
     1614     124,   124, -1355,  3264,   646,   699,   774,  7305, -1355, -1355,
     1615     733,  9742, -1355, -1355,   704, -1355, -1355, -1355,   199, -1355,
     1616    1161,   293, -1355,  8102, -1355,   774,   774,   774,   199, -1355,
     1617    1122, -1355,  5636, -1355, -1355,   724,   774, -1355,   774, -1355,
     1618     125,  9208, 10303,   751, -1355,  1178,   766,   774, -1355,  1122,
     1619     767,   775, -1355,  7752,   512, -1355, -1355, -1355,  9671, -1355,
     1620   -1355, 10973, -1355,   686,   134,  4776, 10583,  2175,  3264, -1355,
     1621     153, -1355, -1355, 10553,  1161,   778,  7900, -1355, -1355,   361,
     1622   -1355, 11792,   829,   859,  4180,   841, 11595, 11653, -1355,   852,
     1623   -1355, -1355, -1355, -1355, 11672, 11672,  8980,   854, -1355, -1355,
     1624   -1355, -1355, -1355, -1355,   912, -1355,   878,  2284,  9322, 11595,
     1625   -1355,   629,   677,   734,   265,   760,   882,   884,   890,   928,
     1626      13, -1355, -1355,   895,   936, -1355,    57, -1355, -1355,  3295,
     1627   -1355, -1355,   410,   929, -1355,   621,   929,   953,   125, -1355,
     1628   -1355,   960, 10443, -1355,   963,   971,  9436, -1355, -1355,  1106,
     1629    1778,  8566,  7305,   704, -1355,   704,   774,   774, -1355, -1355,
     1630   -1355, -1355, -1355, -1355,   774, 10443,  1161, -1355, -1355, 10693,
     1631    1309, -1355, 10413, -1355, -1355, -1355, -1355, -1355, -1355, -1355,
     1632     998,  3508, 11595, -1355, -1355, -1355, -1355, -1355, -1355, -1355,
     1633   -1355, -1355, -1355, -1355, -1355, -1355, -1355,  2175, -1355,   793,
     1634    1004,  1008,  1011,   926,  1015,  1019,  1023,  2873, -1355, -1355,
     1635    1032,   293,  1065, -1355, -1355,  1068, -1355, -1355, -1355,  9671,
     1636   -1355, -1355, -1355, -1355, -1355,  3264, -1355,  9208,  9208, -1355,
     1637     774,  2175,  7425,  1161,  8682, -1355, -1355, -1355, -1355,  9671,
     1638     134, -1355, -1355,   704,   199, -1355, -1355,  9671, -1355,  7188,
     1639   -1355, -1355,   774,   774,   550, 10723,  1071,  1646,  4966, -1355,
     1640     435,   455,  1178, -1355,  1077,  1033,  1061,  1081,   774, -1355,
     1641   -1355, -1355, -1355, 11011, -1355,   705,  7065, -1355,   199,  1085,
     1642   -1355,  2175, 11874,  6076, -1355, -1355, -1355, -1355,   939,  3264,
     1643   -1355,  8798,   686,  7635, -1355, -1355, -1355,  1254,   709,   895,
     1644    1178,  7900,   685, 10553, -1355,  7900, -1355, -1355, -1355, -1355,
     1645     769, -1355,  1093,   859,   494,  8980, -1355, 10723, -1355, -1355,
     1646    8980, -1355,  9094,  8980, -1355, -1355,  1096, -1355,   781,  1103,
     1647    1017,  1104, -1355,  3922,  6360, -1355,   553, -1355, -1355, 11518,
     1648   -1355,   618, 11518, -1355, -1355, -1355, -1355, -1355, -1355, -1355,
     1649   -1355, -1355, -1355,  4776,  4776, -1355, -1355, 11595, 11595, 11595,
     1650   11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595,
     1651   11595, 11595, 11595, 11595, 11595,  3966,  4776, -1355,   936,  1162,
     1652   -1355, -1355,   124,   124, -1355, -1355,  9208, -1355, -1355,  1068,
     1653     512, -1355,  1068, 11576, -1355, -1355, -1355,  4432,  6360,  1105,
     1654    1107, -1355, 10583, -1355, -1355,   562, -1355,  1108,  1721,  1109,
     1655    2038,   284,   895, -1355,   124,   124,   895,   308, -1355,   124,
     1656     124,  1068, -1355, -1355,   124,   124, -1355,   929, 10833,  1161,
     1657   12019,   503,   537, 10833, -1355, 10973, -1355,   895, -1355, 10443,
     1658   -1355,   239,  8218,  8218,  8218,  1161, -1355,  4062,  1099,   177,
     1659     998,   367,  1110,  1113, -1355,  1118,  3734,   565, -1355,  1194,
     1660    1161,  8218,   512,  2175,   512,   686,   727,   929, -1355, -1355,
     1661     752,   929, -1355, -1355, -1355,   859, -1355,   929,   199, 11011,
     1662   -1355,   801,  1115,   813,  1130, -1355,  1129,   199, -1355, -1355,
     1663    9671,   199,  1133,   506,   530, 10693,  7274,  1915, 11595,  2471,
     1664   -1355, -1355,  1126,    82,  1126, -1355, -1355, -1355,   124,   124,
     1665   -1355, -1355,  1178, -1355,   124, -1355, -1355, 10303,  1178,  1134,
     1666   11595, -1355,  1178, 12019, -1355, -1355,  1138, -1355, -1355, -1355,
     1667     512, -1355, 11947,   971, -1355,  8218,  1021,  8566, -1355, -1355,
     1668     562,  1142,  1143,  1254,  3424, -1355, -1355,  7900, -1355, -1355,
     1669    1147, -1355, -1355,  1155, -1355,  1147,  1157, 11792,  4776,    34,
     1670    1136,   168,  1159,  1156,  1164,   854,  1160,  1169, -1355,  1172,
     1671    1173,  5598,  6914, -1355,  4776, -1355,  1017,  1789, -1355,  5215,
     1672    4776,  1168, -1355, -1355,   998,   814, -1355,  4776, -1355, -1355,
     1673     893, -1355, -1355, -1355, -1355, -1355,   629,   629,   677,   677,
     1674     734,   734,   734,   734,   265,   265,   760,   882,   884,   890,
     1675     928, 11595,   927, -1355, 11011,  1175,  1177,  1180,  1162, -1355,
     1676   -1355, -1355, -1355, -1355, 11011,   818,  8218, -1355, 10443, -1355,
     1677    7394,  9550, -1355, 10413,  7154, -1355, -1355,  1721, 11011,   969,
     1678    1183,  1185,  1187,  1189,  1191,  1192,  1193, -1355,  4666,  2038,
     1679   -1355, -1355, -1355, -1355, -1355, -1355, -1355, -1355, -1355, -1355,
     1680   -1355, -1355, -1355, -1355, -1355, -1355, -1355,  1068, -1355, -1355,
     1681   -1355,   895, -1355, -1355, -1355, -1355, -1355, -1355, -1355, -1355,
     1682    1199, -1355,  1202,  1203, -1355, -1355,   293,  1168,  4062, -1355,
     1683   -1355, -1355,  3508,  1200, -1355, -1355, -1355, -1355, -1355,  1178,
     1684    6657,  1259, -1355, -1355, -1355, -1355,  1186,   293, -1355, -1355,
     1685    1068, -1355, -1355,  1068,    73,  1068, -1355, -1355, -1355, -1355,
     1686   -1355, -1355,  9992, -1355,   199, -1355, 10303, -1355, -1355,  1204,
     1687     942,  1208,  1209,  1211, -1355, -1355,  2471, -1355, -1355, -1355,
     1688   -1355, -1355, -1355, -1355,  1646, 10162,  1061, -1355, -1355,  1033,
     1689    1213,  1188, -1355, -1355,  1212,  1215, -1355,  1021,  1927, -1355,
     1690     567, -1355,  3424,   895, -1355,  1219,  7900, 10863,  9208,  1221,
     1691   -1355, -1355,  1216,  1223,  1217, -1355, 11595,   122,    20,  1224,
     1692   -1355,  1228,   512,  1228,  6360,  4776, -1355, -1355,  1228, -1355,
     1693    1789,  3508, -1355, -1355, -1355, -1355,  1229,  4776,  1237,   512,
     1694    4062, -1355, 11518, -1355,   512, -1355, -1355,  4776, -1355,   759,
     1695     929, -1355, -1355, -1355, -1355, -1355, -1355, -1355,   998,   971,
     1696    9436, -1355, -1355,  7514,  1225, -1355,   816,   929, -1355,   860,
     1697     874,   929, -1355,   774,  5096, -1355, -1355, -1355, 11011, 11011,
     1698   -1355,  8682,  8682, -1355,  1234,  1239,  1246,  1258, -1355,  1262,
     1699     602,   133,  1168, -1355,   512, -1355,  3734, -1355,  4776,   540,
     1700   -1355,  6787,  1267,  1270, 11460,  1271,  1278,    50,    78,    53,
     1701    4776,  1279,   199,  4776,  4776,  1277,  1283,   399,  1266, -1355,
     1702   -1355, -1355,  1256, -1355, -1355, -1355, -1355, -1355, -1355, -1355,
     1703   -1355, -1355,  1178,  1290,  4776, -1355, 11011, 11011,   124,  1291,
     1704   -1355, 10272,  3922,   877,   929, -1355, -1355, -1355, -1355, -1355,
     1705    1288, -1355, -1355, -1355, -1355,  1295,  1927, -1355, -1355,  1280,
     1706   -1355,  1147, -1355, -1355,  2175,  1292, -1355, -1355, -1355,   827,
     1707    1294, -1355,   168,  1298, 11595,  1274,   168,   168,  1303,  1304,
     1708   -1355,  1118,  4776,  1302,  1229,   750,   131,  1306, -1355,  1304,
     1709   -1355,  1311,  1306, -1355, -1355,  1314, -1355, -1355,  1068,  1317,
     1710    1322,  7034,  1321,  1323,  1324, -1355, -1355,  1328, -1355, -1355,
     1711    1068, -1355, -1355, -1355, -1355,  1068,  4776,  4776,   971,  1329,
     1712   -1355, -1355, -1355, -1355, -1355, -1355, -1355, -1355, -1355, -1355,
     1713   -1355, -1355, 11595, 11595,  1331,  1332,  1306, -1355, -1355,  1178,
     1714   -1355, -1355, -1355,  5878, 10863,  4776,  4776,  1387,  4776, -1355,
     1715    1316, -1355,  1319, -1355,  1320,  4776,  1325,  4776,  1035,  1326,
     1716      64,   124,  9704,   973, -1355, -1355,  6657,  1334,   542, -1355,
     1717   -1355, -1355, -1355, -1355, -1355, -1355, -1355, -1355,  1068, -1355,
     1718   11278, -1355,  8798,  1336, -1355, -1355, 10863,   543,   587, -1355,
     1719    1338,  1337,   859,  1346, -1355,   370, -1355, -1355,  4776,  1347,
     1720    1348, -1355, -1355,  1349,   650,   721,   512,  1355,  1356, -1355,
     1721    1357, -1355, 11011, -1355, -1355, -1355, -1355, -1355,  1361, -1355,
     1722   11011, 11011, 11011, -1355, -1355,  1363, -1355,  1366,  1370,  1371,
     1723     667,  8334,  8450, -1355, -1355,   490, -1355,  1375,  1380, -1355,
     1724    8914,   832,   839,  1373,   844,  6216, -1355, -1355, -1355,   588,
     1725   -1355,   866,  1384,  1385,   199,  1435,  1031, -1355, -1355,  4776,
     1726   -1355, 11460, 11518, -1355, -1355, -1355,  1390,  1392, 11011, -1355,
     1727   -1355, -1355,  1391, -1355, -1355, -1355, -1355, -1355, -1355, 10863,
     1728     859,   253, -1355,  1376,   859,  1229,   337, -1355, -1355, -1355,
     1729   -1355, -1355, -1355, -1355, -1355,  1393, -1355, -1355, -1355, -1355,
     1730   -1355, -1355,  1395,  1402, -1355, -1355, -1355, -1355, -1355, -1355,
     1731   -1355,  1405, -1355,  1404, -1355, -1355, 11460,   155,  4776, 11460,
     1732   -1355,  1409,  4776, -1355,   195,  1424,  1425, -1355, -1355,  1417,
     1733    1418,  1396, -1355,  1037, -1355, -1355, -1355, -1355,  1161,  2175,
     1734    1414,   912,  1038, 11595, -1355,   886,  1421,  4776,   512,   512,
     1735    1426,  1428,  1432,  1433, -1355, -1355,  8682,  1419, -1355,  1502,
     1736   11595,  1430, -1355, -1355, 11371, -1355,   888, -1355,  1413, 11460,
     1737    1416, -1355, -1355,  1440, -1355,  1444, -1355,  1459,  1461, -1355,
     1738    1427,  1448, 10863, -1355, -1355, -1355,   859,   512,  1450,  1436,
     1739    1445, -1355,  1306,  1306, -1355, -1355, -1355, -1355, -1355, 11460,
     1740     340, -1355,  1042, -1355, -1355,  5372, -1355, -1355,  1438,  4776,
     1741   -1355,  4776,  5372,   199, 10723,   199, 10723,  1455, -1355,  1457,
     1742   -1355, -1355, -1355,  1458,   912, -1355,   901, -1355, -1355,  4776,
     1743    1460,  1462, -1355, 11595, 11595, -1355, -1355,  1120,   121, -1355,
     1744   -1355,  1451, -1355,  1120, -1355, -1355,  2159,   512, -1355, -1355,
     1745     199, 10723,   199, 10723,  1467,  1452,   512, -1355, -1355, -1355,
     1746   -1355, -1355, 11371,  1470,  1120,  7986,  4776, 11282,  1472,  1120,
     1747    1479,  2159,  2686, -1355, -1355, -1355,  1482, -1355, -1355, -1355,
     1748   -1355,  9208, -1355, -1355, -1355, 11149, -1355, 11371, -1355, -1355,
     1749    1463, 11056, -1355, -1355, 11282,   199,  2686,   199,  1483,  1489,
     1750     913, -1355, 11149, -1355, -1355, -1355, 11056, -1355, -1355, -1355,
     1751     199,   199, -1355, -1355, -1355, -1355, -1355, -1355, -1355, -1355
    17531752};
    17541753
     
    17561755static const yytype_int16 yypgoto[] =
    17571756{
    1758    -1332,  4383,  1919, -1332,  1457, -1332,    41,     0,  -257, -1332,
    1759      544,  -527,  -514,  -956,  -190,  3713, -1332,  1485,   580,   585,
    1760      548,   602,  1055,  1052,  1056,  1059,  1061, -1332,  -217,  -341,
    1761     5350,  -699,  -697,  -922, -1332,   -83,  -701,  -678, -1332,   561,
    1762    -1332,   399, -1087, -1332, -1332,   141, -1332, -1329,  -838,   252,
    1763    -1332, -1332, -1332, -1332,    71, -1078, -1332, -1332, -1332, -1332,
    1764    -1332, -1332,   325, -1308,    57, -1332,  -297, -1332,   504,   305,
    1765    -1332,   173, -1332,  -305, -1332, -1332, -1332,   558,  -799, -1332,
    1766    -1332,    11, -1027,   151,   658, -1332, -1332, -1332,   -52, -1332,
    1767      117,   913,  -200,  1494,  4071, -1332, -1332,    19,   107,   365,
    1768     -232,  1565, -1332,  2150, -1332, -1332,   134,  2571, -1332,  3063,
    1769     1550, -1332, -1332, -1332,  -643,  -431,  1210,  1216,   707,   947,
    1770      188, -1332, -1332, -1332,   945,   723,  -404, -1332,  -520,  -362,
    1771      293, -1332, -1332,  -990,  -995,   965,  1194,  1083,   304, -1332,
    1772      150,   317,   -75,  -197,  -129,   679,   781, -1332,  1020, -1332,
    1773     3338,  1566,  -427,   948, -1332, -1332,   710, -1332,  -230, -1332,
    1774      -89, -1332, -1332, -1332, -1266,   433, -1332, -1332, -1332,  1195,
    1775    -1332,    22, -1332, -1332,  -865,  -105, -1331,   -98,  1750, -1332,
    1776     2253, -1332,   929, -1332,  -168,   288,  -180,  -179,  -173,     2,
    1777      -34,   -29,   -28,   687,    75,    77,    92,  -161,  -162,  -153,
    1778     -151,  -148,  -320,  -530,  -516,  -495,  -552,  -307,  -529, -1332,
    1779    -1332,  -506,  1106,  1117,  1121,  2218,  5180,  -562,  -569,  -544,
    1780     -538,  -550, -1332,  -429,  -691,  -685,  -671,  -611,  -246,  -241,
    1781    -1332, -1332,  1149,   273,   -84, -1332,  3714,    76,  -612,  -441
     1757   -1355,  4671,  3340, -1355,   -29, -1355,  1206,   889,  -259, -1355,
     1758     526,  -532,  -488,  -865,  -161,  3194,     0, -1355,   549,   606,
     1759     623,   581,   600,  1034,  1041,  1036,  1040,  1043, -1355,   464,
     1760    -283,  5428,  -920,  -733,  -959, -1355,  -190,  -730,   365, -1355,
     1761    1538, -1355,   379, -1141, -1355, -1355,   112, -1355, -1341,  -609,
     1762     225, -1355, -1355, -1355, -1355,    48, -1087, -1355, -1355, -1355,
     1763   -1355, -1355, -1355,   300, -1335,    81, -1355,  -312, -1355,   479,
     1764     274, -1355,   149, -1355,  -359, -1355, -1355, -1355,   531,  -852,
     1765   -1355, -1355,     8,  -988,   376,  2486, -1355, -1355, -1355,   -81,
     1766   -1355,    99,  1389,  -187,  1960,  4204, -1355, -1355,    52,   394,
     1767    1565,  -246,  1300, -1355,  1933, -1355, -1355,   110,  2272, -1355,
     1768    2685,  1719, -1355, -1355, -1355,  -675,  -409,  1170,  1171,   683,
     1769     924,   329, -1355, -1355, -1355,   907,   692,   -78, -1355,  -241,
     1770    -263,   674, -1355, -1355,  -862,  -881,  -184,    26,  1049,    86,
     1771   -1355,   983,  -133,  -208,  -209,  -150,   651,   749, -1355,   987,
     1772   -1355,  2825,   209,  -478,   902, -1355, -1355,   684, -1355,  -230,
     1773   -1355,    35, -1355, -1355, -1355, -1207,   404, -1355, -1355, -1355,
     1774    1165, -1355,    44, -1355, -1355,  -853,  -110, -1354,  -104,  3033,
     1775   -1355,  4412, -1355,   896, -1355,  -135,    59,  -173,  -172,  -171,
     1776       7,   -42,   -41,   -40,  1597,    25,    28,    46,  -130,  -170,
     1777    -169,  -165,  -156,  -307,  -519,  -494,  -484,  -542,  -299,  -546,
     1778   -1355, -1355,  -514,  1076,  1082,  1088,  1849,  5102,  -569,  -582,
     1779    -552,  -545,  -556, -1355,  -356,  -684,  -672,  -664,  -598,  -210,
     1780    -201, -1355, -1355,   -10,     5,   -71, -1355,  4129,    37,  -610,
     1781     -23
    17821782};
    17831783
     
    17851785   positive, shift that token.  If negative, reduce the rule which
    17861786   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1787 #define YYTABLE_NINF -525
     1787#define YYTABLE_NINF -526
    17881788static const yytype_int16 yytable[] =
    17891789{
    1790       47,   112,    96,   427,   398,   399,   768,   933,   452,   148,
    1791      266,   400,   113,   934,   149,   150,   791,   406,   871,    67,
    1792      259,   439,   401,   512,   407,   712,   707,   935,   613,   112,
    1793      112,   402,    47,   403,    96,  1203,   404,  1092,   382,   383,
    1794      846,   618,   111,    47,   895,    47,   505,   160,  1187,   854,
    1795     1153,    67,  1185,  1186,   142,    47,   749,    48,   975,   853,
    1796      201,    47,   857,   192,    47,   847,   215,    47,   864,   225,
    1797      342,   848,   751,   820,  1401,   947,   756,  1145,   218,   842,
    1798      845,   112,   112,   995,   398,   399,   933,   279,   409,    48,
    1799     1464,   400,   934,   843,   121,   424,  1468,   406,   605,  1197,
    1800      779,    31,   401,  1091,   407,    47,   935,    68,    47,    31,
    1801      202,   402,   679,   403,   844,    47,   404,    61,   151,   109,
    1802      152,   165,   637,   884,   884,   884,   641,   739,  1421,  1422,
    1803       41,    42,   688,   408,    75,   153,   290,    31,   446,    68,
    1804      692,    31,   884,  1421,  1422,   280,    47,   574,   160,    61,
    1805      148,    54,   114,    31,    47,   149,   150,   467,   783,    47,
    1806     1320,   372,   482,   484,  1464,   978,    75,  -234,  -234,  1510,
    1807      122,   211,   858,   410,  1265,   746,   861,  1484,   483,   251,
    1808      140,   410,   575,    54,    47,    47,   165,   160,     2,   205,
    1809        4,     5,     6,     7,  1468,   141,    31,   878,  1423,  1468,
    1810       47,   881,  1266,   478,  1539,    31,  1541,   418,    47,   410,
    1811      160,   527,   677,  1432,   842,   209,   884,    47,   219,  1468,
    1812       47,   327,   442,   488,  1080,   410,  1468,   112,   843,  1321,
    1813      148,   240,   243,  1193,   536,   149,   150,   674,  -234,   143,
    1814      886,   887,   112,   740,   675,   536,   112,   145,  1187,   844,
    1815       47,   112,    96,    35,   760,    36,   154,   596,   905,   151,
    1816     1194,   152,  1099,  1202,    47,    47,   855,   160,   610,    67,
    1817      846,    47,   470,   105,   105,   862,   153,   610,    47,  1203,
    1818      976,   885,   885,   885,   435,  1102,   342,   703,    95,  1038,
    1819      666,   857,   472,   112,   705,   847,   170,   167,  1187,  1037,
    1820      885,   848,  1185,  1186,   618,   105,   200,    48,   884,   842,
    1821     1025,   536,  1155,  1014,   327,  1136,    -3,   180,   681,   674,
    1822       95,   168,  1137,   843,   686,   376,   675,   441,    47,   386,
    1823      372,   147,   958,    95,   524,   739,   536,  1346,  1135,  1111,
    1824      105,   377,   682,   684,   844,   387,   435,    47,    47,   188,
    1825      683,   685,    95,   389,   605,    95,   831,    68,   937,   176,
    1826      564,   565,  1092,  1404,    47,   478,   285,    61,    47,   390,
    1827     1217,   440,   479,   165,   885,  1220,  1221,    41,    42,   653,
    1828      950,   251,   329,   605,    75,   478,   926,  1208,   605,    75,
    1829      846,  1494,   464,   478,   483,    47,   566,   567,   854,   880,
    1830      585,    54,   109,   521,  -290,    47,   586,   372,   536,   260,
    1831      871,   739,   261,    41,    42,   847,   576,   246,  1194,   916,
    1832      607,   848,  1187,    47,  1017,   251,   755,  1459,  1091,    47,
    1833      527,    47,  1041,   228,    95,   527,   761,   229,   527,  1203,
    1834      233,  1552,   235,   762,  1262,   770,  1203,    95,   342,   244,
    1835     1553,   740,   109,  1453,  1454,    47,   211,   560,   561,   109,
    1836      112,  1563,  1211,    41,    42,   578,   885,   410,  1567,   391,
    1837       41,    42,   397,   188,   112,   579,  -112,  1568,   393,    47,
    1838     1173,  1175,   936,  1408,   874,   392,   249,    47,   875,   372,
    1839     1151,    47,   813,    96,   394,    47,    95,  -112,   112,  1203,
    1840      112,   327,   327,  -520,   936,   979,  1215,  1383,    95,  1107,
    1841       67,   824,  1213,   562,   563,   111,   712,   707,   398,   399,
    1842      653,   438,   263,   105,  1119,   400,   505,   740,   896,   654,
    1843     1261,  1036,   406,  -469,   479,   -10,   401,   112,    95,   407,
    1844      653,  1122,   112,   653,   618,   402,   109,   403,    48,  1080,
    1845      404,    75,   486,   713,   479,  1038,  -443,    41,    42,   907,
    1846     1344,   767,   479,  1107,  -469,  -444,  -469,  1345,   909,   714,
    1847     -469,    75,  -112,  -112,   693,   490,   228,   327,   784,    75,
    1848      586,   767,   507,   790,   767,   789,   275,   211,  -112,  1019,
    1849      112,   715,  -291,   831,   277,  1008,   327,    47,    68,     8,
    1850        9,    10,    11,    12,   278,  1381,   737,   716,    61,    47,
    1851      717,    47,   342,   713,   172,   109,    95,   833,   715,     2,
    1852      205,     4,     5,     6,     7,    75,    41,    42,    31,   929,
    1853       47,   472,   730,  1200,   930,   557,   612,  1134,   731,   478,
    1854      558,   559,    54,   876,  1036,  1394,    47,   877,   750,  1201,
    1855      754,   176,   112,  1200,  1350,   330,    34,   252,    55,    55,
    1856     1523,    47,   327,   112,    47,   112,  1528,  1500,   638,  1326,
    1857      897,   712,   642,  1051,  1500,   500,   607,   501,  1335,  1337,
    1858     1184,   955,  1431,   831,    35,   109,    36,  1548,   342,   331,
    1859       55,  1049,  1555,   188,  1336,  1338,    41,    42,    47,  1420,
    1860       47,   898,  1428,   652,   906,   872,   908,   899,   370,   587,
    1861      607,   410,  1096,   112,   775,  -112,   228,  -112,   233,   112,
    1862      747,  -112,    55,   112,  1352,    55,   748,  1549,   757,   774,
    1863     1384,   112,   161,   332,   758,   775,  -112,  -112,   441,   777,
    1864     1130,   410,   333,   704,    47,    47,   876,  1467,   193,   778,
    1865     1118,   216,  1471,   416,   226,  -105,    37,   920,    47,  -105,
    1866       40,   936,    37,   775,   105,  1056,    40,    41,    42,  1502,
    1867      674,  1503,   954,    41,    42,   605,   436,   675,   703,    95,
    1868     1369,   334,  1493,   612,  1370,   705,   444,     8,     9,    10,
    1869       11,    12,  1154,    43,  1254,  1393,   568,   569,   922,   839,
    1870      739,   610,   892,   146,   775,  1003,   228,   109,   479,   611,
    1871      590,  1004,   410,   347,   737,   910,    31,   410,    41,    42,
    1872        8,     9,    10,    11,    12,    75,  1550,   959,   371,   610,
    1873      763,   211,   764,   161,  1177,   765,  1252,   960,   771,    47,
    1874     1256,   933,  1051,   335,    34,   211,   373,   934,   375,    31,
    1875      479,    47,  1294,  1295,   833,   528,  1007,  1004,  1016,  1250,
    1876     1377,   935,   831,   945,   731,   586,   775,    75,  1562,   948,
    1877      775,  1009,   161,   464,  1562,   384,   979,    34,    55,   388,
    1878      979,   979,   251,   329,   410,  1562,   578,   396,   410,  1562,
    1879      737,   941,  1378,   941,   653,   161,   579,   841,   775,   612,
    1880       37,   112,   653,  1380,    40,   329,   410,   443,    55,   775,
    1881      408,    41,    42,  1385,   115,   913,   740,   410,   936,   775,
    1882      109,    67,   138,   237,    47,   537,   538,   539,  1198,   425,
    1883     1372,    41,    42,   109,   873,   138,   139,   744,    47,   211,
    1884     1390,  1391,  1450,  1078,    41,    42,    47,   745,  1447,   540,
    1885      888,   541,   426,   542,   543,  1469,   431,   238,   158,   449,
    1886     1516,   775,   239,  1573,    47,   904,  1517,  1441,  1004,   586,
    1887      752,  -367,  1157,   919,   410,   753,   936,   936,  -396,    37,
    1888     1123,   182,   183,    40,   112,  1169,   932,   410,   704,   491,
    1889       41,    42,  1172,   653,   610,   511,  1342,   740,   418,   670,
    1890      410,   112,   468,   690,   653,  1174,   112,   610,   290,    68,
    1891      109,   469,   138,   139,   515,   373,   698,   257,   410,    61,
    1892     1245,    41,    42,   158,   699,  1139,   700,   109,   520,   138,
    1893      139,   536,   841,   612,  1447,  1448,    75,   732,    41,    42,
    1894      532,  1237,  1147,   410,   654,   767,   327,  1147,   488,   329,
    1895      410,  1061,   242,    54,   570,   112,  1495,  1496,   323,   855,
    1896      329,   610,   507,  1449,   571,   653,   891,   339,   112,   112,
    1897      112,  1313,  1314,  1315,   528,  1351,  1353,  1354,  1535,   528,
    1898     1461,  1205,   528,   128,  1402,   129,   130,   131,  1402,   572,
    1899      347,   573,   373,   112,    41,    42,  1147,   872,  1421,  1422,
    1900        8,     9,    10,    11,    12,   576,  1078,   338,  1010,  1212,
    1901     1214,  1216,   801,   802,   803,   804,  -440,   429,  1015,   594,
    1902     1124,   433,   667,  1302,  1303,    47,  1305,   841,  1107,    31,
    1903      597,   441,  1309,  1026,   109,  1312,   138,   139,   342,   612,
    1904      797,   798,   647,   654,   668,    41,    42,   799,   800,    55,
    1905      669,   323,   455,  1521,  1461,   671,    37,    34,   182,   183,
    1906       40,   672,    37,   673,   182,   183,    40,    41,    42,    68,
    1907      805,   806,   676,    41,    42,   105,   678,   256,   721,   479,
    1908      696,   718,   759,   433,   723,   719,   495,   936,  -238,   772,
    1909     1485,   347,   776,   609,   162,   610,    75,   780,   834,   609,
    1910      112,   610,   -12,   611,   936,   836,   838,   529,   849,   611,
    1911      158,   901,   -13,    54,   893,   894,   218,   921,   923,   928,
    1912      699,   924,    47,  -417,   977,   949,   704,   653,  -292,  -524,
    1913      963,   970,   748,   972,   704,     8,     9,    10,    11,    12,
    1914      918,   983,   105,  1061,   984,   985,    67,   987,   988,   925,
    1915      989,   990,   612,   927,   595,   999,   347,   602,  1123,   162,
    1916     1011,  1012,  -293,  1013,    31,   112,   112,   112,  1078,     8,
    1917        9,    10,    11,    12,  1027,  1028,   635,   936,   936,   737,
    1918      639,  1029,  1030,   339,     8,     9,    10,    11,    12,  1031,
    1919     1032,  1033,    34,  1044,  -405,  1445,  1427,  -404,    31,  1093,
    1920     1058,   347,   347,   347,  1095,  1103,  1147,  1147,  1147,  1104,
    1921     1105,   211,  1561,    31,  1106,  1112,   993,  1113,  1114,  1115,
    1922      347,  1121,   653,   653,  1131,  1205,    34,  1132,   775,  1167,
    1923     1133,  1138,  1182,  1183,    68,   105,  1143,  1188,   323,   323,
    1924     1146,    34,  1189,  1190,    61,  1191,  1192,   537,   538,   539,
    1925     1300,  1123,   398,   399,  1206,   209,   219,   434,  1207,   400,
    1926      737,    75,  1209,   767,  1078,   406,   455,  1210,  1222,   455,
    1927      401,   540,   407,   541,  1218,   542,  1322,   653,    54,   402,
    1928      653,   403,  1225,   777,   404,   410,  1224,   115,   460,   674,
    1929     1232,  1233,    -3,   778,   347,  1230,   675,  1235,  1124,    47,
    1930       47,  1240,  1534,  1242,   500,  1246,  1251,  1253,   441,   112,
    1931      112,  1255,   495,    68,   323,  1258,   495,  1259,  1078,   434,
    1932     1263,  1078,  1267,   479,  1270,   653,   529,  1272,   529,  1274,
    1933      653,   529,  1275,   323,   529,  1276,   728,  1277,  1278,  1280,
    1934       75,  1304,  1287,   531,  1296,   339,   162,  1297,   112,  1325,
    1935     1147,  1147,   440,  1307,  1123,  1333,  1308,    54,  1339,  1310,
    1936      653,  1341,  1343,  1311,  1348,  1319,  1078,  1347,  1349,  1355,
    1937     1356,  1078,    37,  1357,   182,   183,    40,  1359,   105,  1365,
    1938     1366,  1367,  1368,    41,    42,  1205,   347,  1101,  1375,  1486,
    1939     1376,  1124,  1205,   347,    64,   116,  1379,  1386,   148,   323,
    1940      105,  1078,  1387,   149,   150,  1315,  1395,    47,   112,   698,
    1941      829,   410,   175,   602,  1396,  1398,  1405,   112,  1415,   700,
    1942      105,  1416,  1408,   653,  -406,  1419,    64,  1430,   653,  1434,
    1943     1436,  1438,    47,    47,  1439,   160,  1446,  1455,  1451,   159,
    1944     1440,  1456,   870,  1460,  1370,  1205,   653,   602,   653,  1536,
    1945     1457,  1458,   653,   879,  1465,   653,  1470,    47,  1544,   372,
    1946       55,   220,   175,   653,  1078,   175,  1358,   653,  1472,  1078,
    1947     1474,  1476,  1478,    68,  1360,  1361,  1362,  1480,  1482,   105,
    1948       68,  1483,  1488,   479,  1489,  1490,  1501,  1078,  1511,  1078,
    1949      479,  1519,  1513,  1078,  1124,  1515,  1078,  1527,   258,  1520,
    1950       75,  1542,   460,  1547,  1078,   460,  1543,    75,  1078,   339,
    1951     1554,   175,  1556,   105,   213,  1558,  1564,    54,   327,  1571,
    1952     1572,  1223,  1397,   808,    54,   807,  1324,    55,   809,   212,
    1953      214,   455,   810,    68,  1219,   811,  1522,  1433,  1574,   231,
    1954      328,  1389,  1257,   479,   347,   728,  1504,   241,   258,   349,
    1955     1406,  1229,   942,  1108,     2,   205,     4,     5,     6,     7,
    1956       75,   495,   531,   694,   531,   729,   213,   531,   951,   695,
    1957      531,  1110,  1142,   826,   175,  1057,  1120,    54,   900,   405,
    1958     1334,   212,   214,   227,   816,   339,   742,   973,     8,     9,
    1959       10,    11,    12,     0,   423,   817,   965,   428,   430,   818,
    1960      347,   347,   159,  1444,     0,     0,     0,     0,     0,   213,
    1961        0,     0,     0,     0,     0,     0,   105,    31,     0,    35,
    1962       55,    36,     0,   447,   212,   214,     0,   450,   175,   451,
    1963       37,     0,   173,   174,    40,   175,     0,     0,   466,   105,
    1964        0,    41,    42,  1018,    64,    34,   105,   829,     0,   480,
    1965       37,     0,   182,   183,    40,     0,     0,     0,     0,   487,
    1966        0,    41,    42,     0,     0,     0,     0,   430,   517,     0,
    1967      213,     0,     0,     0,     0,     0,   123,   126,   127,     0,
    1968      728,   534,   535,     0,     0,   212,   214,   698,     0,   410,
    1969      728,     0,     0,   556,     0,     0,     0,   700,     0,   105,
    1970        0,     0,     0,     0,   175,   728,     0,     0,   213,     0,
    1971        0,     0,   213,     8,     9,    10,    11,    12,     0,     0,
    1972      486,   175,     0,   212,   214,   175,     0,   212,   214,   535,
    1973        0,     0,     0,     0,     0,   258,     0,   829,   603,     0,
    1974        0,   455,    31,   506,   631,     0,     0,   253,     0,   254,
    1975        0,     0,     0,     0,     0,     0,     0,   636,     0,     0,
    1976      455,   636,    55,    55,   258,   535,     0,   460,     0,     0,
    1977       34,     0,     0,     0,   729,    37,  1388,   182,   183,    40,
    1978        0,   495,  1125,   323,     0,    55,    41,    42,   175,     0,
    1979       37,     0,   182,   183,    40,     0,     0,     0,     0,   213,
    1980        0,    41,    42,     0,     0,    55,    37,     0,   182,   183,
    1981       40,   480,   184,     0,   212,   214,     0,    41,    42,     0,
    1982        0,    37,   185,   173,   174,    40,   349,  1532,     0,   410,
    1983      395,   480,    41,    42,   870,     0,     0,  1533,     0,   480,
    1984      414,   415,     0,   184,     0,   419,     0,   421,   422,     0,
    1985      347,   347,     0,   185,     0,     0,     0,     0,   371,    55,
    1986        0,     0,     0,     0,    55,   724,     0,     0,   430,     0,
    1987      166,     0,   171,     0,     0,   177,   178,   179,     0,   181,
    1988      213,     0,     0,   738,     0,    64,     0,     0,     0,     0,
    1989        0,     0,     0,   430,   232,   212,   214,   430,    55,     8,
    1990        9,    10,    11,    12,   728,   728,   247,   248,     0,   729,
    1991        0,     0,   212,     0,     0,   455,   829,     0,     0,   729,
    1992       37,     0,   182,   183,    40,     0,   258,   349,    31,     0,
    1993      213,    41,    42,     0,   729,  1505,     0,  1509,     0,     0,
    1994        0,     0,   794,   795,   796,   212,   214,    37,     0,   173,
    1995      174,    40,     0,     0,   175,     0,    34,   264,    41,    42,
    1996        0,     0,   728,   728,     0,     0,     0,   265,     0,     0,
    1997        0,     0,  1538,   819,  1540,   347,     0,   460,     0,     0,
    1998        0,     0,     0,     0,   375,   535,     0,   175,     0,     0,
    1999        0,   636,   832,     0,   603,     0,   460,     0,   959,     0,
    2000      610,    55,     0,   175,     0,   851,     0,     0,   960,     0,
    2001        0,     0,     0,     0,     0,     0,     0,  1569,   175,  1570,
    2002        0,     0,     0,   603,    55,     0,     0,     0,   603,     0,
    2003        0,    55,  1577,  1578,   636,   339,     0,   349,   349,   349,
     1790      50,   115,   151,   152,   153,   108,   108,    99,   269,   116,
     1791     790,   454,   441,   931,   400,   401,   402,   403,   404,   429,
     1792     384,   385,   405,   750,   514,   932,   844,   755,   973,   178,
     1793     869,   406,    50,   933,   767,   507,   262,   108,  1144,    99,
     1794     165,   852,   945,   612,   149,   893,   993,  1091,  1090,   711,
     1795      50,   617,    70,   408,   124,   855,   845,   163,   409,    98,
     1796     678,   862,   843,   846,   188,   819,  1463,   211,   851,   154,
     1797      50,   195,   155,  1202,   218,   108,   145,   228,   221,   178,
     1798     687,    51,   178,  1467,    70,   411,   343,   168,   691,   840,
     1799     156,    98,   931,   426,   400,   401,   402,   403,   404,    64,
     1800      31,   706,   405,   150,   932,   165,   528,   115,   574,    98,
     1801      78,   406,   933,    51,   841,   115,   535,   282,   268,   273,
     1802     125,    31,  1210,   191,   842,  1214,    98,  1319,   178,    98,
     1803    1135,    64,  1400,   408,   204,    31,   604,  1136,   409,  1152,
     1804    1463,  1509,    78,   575,   179,   151,   152,   153,   308,   149,
     1805    1212,   974,   168,  1219,  1220,   535,   163,   115,   346,   484,
     1806     486,  1186,   211,    31,   636,  -235,  -235,   585,   640,   374,
     1807     254,  1215,   412,   586,   778,   283,  1538,   480,  1540,  1184,
     1808    1185,  1467,  1211,  1098,   205,   328,  1467,   188,   188,  1196,
     1809     745,   178,    31,   412,   263,   163,  1320,   264,   410,  1420,
     1810    1421,   436,   676,   268,   535,   420,  1467,   412,    98,  1201,
     1811    1213,    50,   154,  1467,   144,   155,  1264,   146,   163,   682,
     1812     684,    98,  1261,   211,   840,   151,   152,   153,   738,  1192,
     1813     444,  1134,   462,   156,   148,  1483,  -235,   681,   683,  1420,
     1814    1421,   308,   115,   485,  1265,   178,   399,   191,   437,   841,
     1815     293,  1101,   178,    50,   759,   844,  1193,  -470,   108,   842,
     1816      99,   273,   490,   436,   412,   448,   273,   268,   268,  1422,
     1817      98,   596,   673,   115,  1154,   163,   217,   674,   328,   976,
     1818    1037,   739,    98,   855,   469,   845,   532,   665,  -470,   727,
     1819    -470,  1024,   846,   244,  -470,   754,   308,   472,   165,  1345,
     1820     378,   343,   157,   388,  1012,    70,   440,  1036,   308,  1431,
     1821     437,   617,    98,   173,   769,   680,   379,  1202,   840,   389,
     1822     178,   685,   702,    31,   579,   528,   488,   704,   217,   149,
     1823     528,   924,   183,   528,    51,   535,   374,   178,   480,  1110,
     1824    1216,   178,   115,   841,   203,   168,   346,    31,   485,  -291,
     1825     610,   628,    64,   842,   673,   564,   565,   481,   480,   674,
     1826     492,  1186,  1403,    78,   249,   633,   480,   509,    78,   633,
     1827     576,   217,   115,  1091,  1090,   844,    57,   117,   823,   883,
     1828     883,   883,   762,   606,   763,   812,  1551,   764,    98,   852,
     1829     770,   566,   567,   853,    71,   609,   829,   268,   883,   254,
     1830     170,   882,   882,   882,   178,   845,  1562,   188,    57,   611,
     1831     265,  1186,   846,  1566,   374,   935,   914,   860,   604,   609,
     1832     882,   252,   869,   604,   171,   268,    71,   308,   308,  1184,
     1833    1185,   268,   217,   738,   633,   179,  1493,   948,   878,   112,
     1834    1552,   141,   142,   212,   391,   462,   222,  -113,   462,  -521,
     1835      41,    42,   637,  1382,  1407,   115,   641,   699,   115,   -10,
     1836     392,   214,   343,  1193,   328,   328,   191,  1567,  -113,   393,
     1837     217,   288,   883,  1172,  1174,   217,   748,  1202,   889,   331,
     1838    1343,   268,    41,    42,  1202,   394,   739,  1344,  1121,   268,
     1839     502,   633,   503,    50,   882,   727,   374,   744,   108,   728,
     1840      99,  -444,   977,   115,  -445,   532,   894,   532,   523,   738,
     1841     532,   507,   278,   532,  1150,   308,   703,   115,   481,   587,
     1842     308,   412,   308,   308,   400,   401,   402,   403,   404,    78,
     1843     777,  1260,   405,   115,   346,  1186,   711,  1202,   481,   395,
     1844     328,   406,  1035,  1452,  1453,    70,   481,  1037,   280,    78,
     1845     617,   712,    98,   905,  1458,   396,   611,    78,   332,   328,
     1846     217,   907,   739,   883,   408,   884,   885,   713,   178,   409,
     1847     112,   714,   141,   240,    51,  1380,   535,   281,   579,   579,
     1848    1106,    41,    42,   903,   112,   882,   308,   715,   706,   856,
     1849     736,   333,    64,   859,   334,    41,    42,   633,   346,   442,
     1850     178,   335,   628,    78,   760,  -113,  -113,   241,   610,   480,
     1851     610,   761,   242,  1499,   876,   872,   178,   443,   879,   873,
     1852    1499,  -113,   712,   328,   343,   112,   336,  1017,   633,    57,
     1853     727,   178,   829,   633,  1106,   628,    41,    42,   927,   633,
     1854     727,   217,   633,   633,   633,   895,   714,    71,   372,   874,
     1855     831,   953,  1430,   875,   727,  1035,  1199,   956,  1199,  1334,
     1856     692,   633,   928,   268,   782,   870,   586,   839,   373,   611,
     1857     606,   377,  1200,  1548,  1325,  1335,   896,  1048,   651,   874,
     1858     254,   330,   897,  1117,     2,   208,     4,     5,     6,     7,
     1859     112,   217,   711,  1133,   386,   115,   346,   699,  1095,   699,
     1860     343,    41,    42,  1336,   774,   728,   390,   462,     2,   208,
     1861       4,     5,     6,     7,  -106,   871,  -292,   115,  -106,  1337,
     1862    1383,   829,   112,     8,     9,    10,    11,    12,   178,   788,
     1863     590,   886,   412,    41,    42,   633,   958,   628,  1129,  1501,
     1864     398,  1502,  1055,   744,   744,   214,   902,   557,  1015,    35,
     1865     410,    36,    31,   558,   559,   427,   930,   112,   703,   141,
     1866     142,  1349,     2,   208,     4,     5,     6,     7,    41,    42,
     1867      37,   115,   346,    35,    40,    36,   777,   777,  1183,  1368,
     1868      34,    41,    42,  1369,     8,     9,    10,    11,    12,   481,
     1869    1393,   230,    43,   112,   751,   736,  1549,   560,   561,   752,
     1870      78,   673,   839,   611,    41,    42,   674,    44,   428,   702,
     1871     604,   217,    -3,    31,   704,   729,    46,    47,   579,   746,
     1872    1251,   730,   562,   563,  1255,   747,   633,    35,   633,    36,
     1873    1020,   481,  1351,   633,   346,   519,   908,   610,   412,   217,
     1874     728,    34,    78,   509,   217,   433,  1176,   931,  1040,   610,
     1875     728,  1253,   568,   569,   727,   727,   451,   555,   556,   932,
     1876    -113,   911,  -113,   412,   728,  -368,  -113,   933,  1156,    57,
     1877     412,   736,   112,   977,   141,   142,   214,   977,   977,   756,
     1878    -397,  -113,  -113,    41,    42,   757,   831,    71,  1522,    49,
     1879     114,   773,   493,   178,  1527,   555,   839,   774,   738,   470,
     1880     308,   829,   254,   330,   412,   108,  1197,   471,   611,  1293,
     1881    1294,   918,   727,   727,   245,  1547,   462,   774,   114,   114,
     1882    1554,    49,   633,   920,  1001,  1168,   115,   412,  1014,   774,
     1883    1002,   555,   217,    49,   730,   462,   699,  1249,   513,    49,
     1884    1118,   293,  1376,   586,   699,   115,   217,    49,   774,  1377,
     1885     517,   739,    70,    49,  1379,   774,    49,   958,   958,    49,
     1886     774,   522,   744,   536,   537,   538,   533,   115,   308,  1171,
     1887    -293,   609,   108,   114,   114,  1122,  1384,     8,     9,    10,
     1888      11,    12,   774,  1173,   346,   609,  1236,   539,   412,   540,
     1889     777,   541,   542,  1341,   535,   703,  1449,    49,  1468,    64,
     1890      49,   570,  1446,   703,   774,   328,    31,    49,  1005,  1002,
     1891      78,  1515,   571,   143,  1244,  1301,  1302,  1516,  1304,   572,
     1892     346,   611,   573,  1572,   443,  1309,   576,  1311,  1371,   586,
     1893      43,   939,   739,   939,    34,   420,   669,   412,    49,   217,
     1894     339,   633,   633,   774,  1007,   578,    49,   412,   490,   330,
     1895     412,    49,   330,   412,    46,    47,  1330,   870,   536,   537,
     1896     538,   308,  -441,  -294,   728,   728,   108,   243,   246,   594,
     1897       8,     9,    10,    11,    12,   597,    49,    49,   853,   330,
     1898     609,  1401,   539,    -3,   540,  1401,   541,  1322,   727,  1389,
     1899    1390,   462,    49,  1312,  1313,  1314,   727,   727,   727,    31,
     1900      49,   115,   633,  1350,  1352,  1353,   793,   794,   795,    49,
     1901     646,    43,    49,  1204,   666,    43,   958,   214,   667,   114,
     1902    1448,   668,   728,   728,   268,   670,   776,    34,   412,   671,
     1903     957,   214,   609,   672,   114,    46,    47,  1460,   114,    46,
     1904      47,   675,    49,   114,   727,   800,   801,   802,   803,   718,
     1905    1534,   343,  1440,  1002,  1446,  1447,    49,    49,  1494,  1495,
     1906     481,   346,   934,    49,  1420,  1421,   796,   797,   804,   805,
     1907      49,    78,     8,     9,    10,    11,    12,   677,    37,   259,
     1908     176,   177,    40,   695,   934,   798,   799,  1484,  1426,    41,
     1909      42,   717,   720,   178,   131,   722,   132,   133,   134,  -239,
     1910    1106,    31,   758,   273,   115,    41,    42,   113,   771,   108,
     1911    1520,  1460,   221,   775,   779,   373,   -12,   832,    49,   833,
     1912     836,   847,   115,   899,   214,   919,   308,   -13,   466,    34,
     1913     891,   108,   217,    37,   892,   176,   177,    40,    49,    49,
     1914     921,   922,   633,   698,    41,    42,   115,   926,  -418,   947,
     1915     112,   108,   141,   142,  1122,    49,    43,  -525,   961,    49,
     1916     736,    41,    42,   747,   968,  1079,  1331,   970,   975,   981,
     1917     652,   578,   982,   412,   983,  1006,    57,   985,    70,   986,
     1918      46,    47,   987,   988,   997,  1009,    49,  1010,  1092,  1444,
     1919    1011,   633,   633,  1026,    71,  1027,    49,  1028,   728,  1029,
     1920     273,  1030,  1031,  1032,  1112,   308,   728,   728,   728,  1043,
     1921     108,  1560,  -406,  -405,    49,  1057,  1102,  1094,  1103,  1104,
     1922      49,  1105,    49,  1111,  1113,    64,    37,  1114,   992,  1120,
     1923      40,  1130,   774,  1131,  1132,  1166,    78,    41,    42,   115,
     1924    1137,   736,   991,  1123,   108,  1142,    49,  1122,    43,  1145,
     1925    1187,   114,  1050,   917,   728,  1188,  1189,  1204,   400,   401,
     1926     402,   403,   404,   743,   653,   114,   405,   215,  1190,   178,
     1927      49,    -3,    46,    47,  1191,   406,  1205,   234,    49,  1206,
     1928    1208,    37,    49,   176,   177,    40,    49,  1209,  1217,   114,
     1929     118,   114,    41,    42,  1221,  1222,  1533,   408,  1224,   268,
     1930    1229,  1234,   409,  1239,   481,  1241,  1254,  1245,  1250,   502,
     1931    1252,   652,   217,  1257,  1262,    78,   633,   443,   377,   215,
     1932    1258,   673,  1266,  1269,  1271,   114,   674,  1273,   652,  1207,
     1933     114,   652,  1274,  1275,  1303,  1276,  1277,    57,  1279,   161,
     1934     934,  1286,   115,  1295,  1296,   716,  1332,   108,  1306,  1324,
     1935    1122,  1307,  1308,  1338,  1340,    71,  1342,  1310,  1318,  1346,
     1936     474,  1348,   215,  1347,  1507,   115,  1507,  1354,  1355,  1356,
     1937     108,  1153,   115,  1358,   115,  1364,   115,   108,  1365,   114,
     1938    1366,  1367,  1378,   749,  1443,   753,    49,  1374,  1008,   151,
     1939     152,   153,  1375,  1385,  1386,  1314,   260,    49,  1013,    49,
     1940    1394,  1507,  1395,  1507,   161,  1397,  1532,  1414,  1404,   217,
     1941    1407,   115,  1025,   115,  1415,  -407,  1418,  1204,    49,  1429,
     1942    1433,  1435,  1050,   215,  1204,   115,  1437,  1438,  1439,  1445,
     1943     108,  1532,  1532,  1450,    49,  1369,  1454,   324,  1455,   163,
     1944     114,   308,  1456,  1457,  1459,  1469,   340,  1464,  1471,    49,
     1945    1473,   114,    49,   114,  1475,  1477,  1532,  1479,  1482,  1481,
     1946    1487,   215,  1489,   374,   481,  1510,   215,  1512,  1488,   555,
     1947    1500,   481,  1518,  1514,  1519,    78,  1541,  1204,   328,   212,
     1948     222,   508,    78,  1526,  1542,  1546,    49,  1553,    49,  1555,
     1949     488,  1079,  1557,  1570,   175,  1563,   431,   214,   934,  1571,
     1950     435,   114,    57,  1223,   806,  1323,  1521,   114,   808,  1432,
     1951     519,   114,   807,   809,  1573,  1388,  1256,   810,  1405,   114,
     1952      71,  1503,  1123,  1228,   481,   693,   694,  1107,   940,   949,
     1953     324,   457,    49,    49,   890,    78,   231,   255,  1109,   825,
     1954     232,  1056,  1141,   236,   898,   238,    49,   164,  1119,   963,
     1955    1333,   215,   247,   971,   815,     0,   934,   934,   741,     0,
     1956     816,   196,   435,     0,   219,   497,   817,   229,     0,     0,
     1957       0,     0,     0,     0,     0,     0,   442,     0,     0,     0,
     1958       0,    57,   113,     0,     0,   530,  1392,     0,     0,     0,
     1959       0,     0,     0,     0,   443,   943,     0,   161,     0,    71,
     1960       0,   946,     0,     0,     0,   466,     0,     0,     0,     0,
     1961       0,     0,  1181,  1182,     0,  1123,     0,     0,    37,     0,
     1962     185,   186,    40,     0,     0,     0,    49,     0,   766,    41,
     1963      42,   595,   215,   418,     0,   601,     0,     0,    49,     0,
     1964      43,  1419,   783,     0,  1427,   766,   164,   789,   766,   215,
     1965       0,     0,     0,     0,   634,   697,   438,   412,   638,   375,
     1966       0,   340,     0,   698,    46,    47,   446,     0,     0,     0,
     1967    1231,  1232,     0,     0,     0,     0,     0,     0,     0,   231,
     1968       0,   652,   215,     0,     0,   164,   216,     0,   114,  1466,
     1969       0,     0,     0,    37,  1470,     0,   474,    40,     0,     8,
     1970       9,    10,    11,    12,    41,    42,     0,     0,   164,     0,
     1971       0,    49,     0,     0,     0,    43,   324,   324,  1123,     0,
     1972     445,     0,     0,     0,  1492,    49,     0,     0,    31,     0,
     1973     837,     0,   609,    49,   529,     0,     0,     0,   216,    46,
     1974      47,    57,     0,     0,   457,     0,     0,   457,    57,     0,
     1975      37,    49,   185,   186,    40,     0,    34,     0,     0,    71,
     1976       0,    41,    42,     0,     0,   118,    71,   934,   904,     0,
     1977     906,   114,    43,     0,     0,   653,     0,     0,     0,     0,
     1978     652,   216,  1060,    43,   934,     0,     0,   608,   114,   609,
     1979     497,   652,   324,   114,   497,     0,    46,    47,   776,     0,
     1980     412,    57,   215,     0,   530,     0,   530,    46,    47,   530,
     1981    1561,   324,   530,     0,     0,     0,  1561,     0,   231,    71,
     1982     236,     0,   340,     0,     0,     0,   375,  1561,     0,     0,
     1983     215,  1561,     0,    76,     0,   215,   952,     8,     9,    10,
     1984      11,    12,   216,   114,     0,     0,  1357,     0,     0,     0,
     1985       0,     0,     0,     0,  1359,  1360,  1361,   934,   934,     0,
     1986      67,   119,     0,     0,     0,    76,    31,     0,     0,     0,
     1987       0,     0,     0,     0,   653,   324,     0,     0,     0,     0,
     1988     216,   114,   689,     0,     0,   216,   827,    37,     0,   185,
     1989     186,    40,    67,     0,    34,     0,     0,     0,    41,    42,
     1990       0,     0,  1396,   224,   375,     0,     0,     0,   231,    43,
     1991     162,     0,     0,    49,     0,     0,   731,   868,     0,     0,
     1992       0,    43,   601,   215,   697,     0,   412,     0,   877,     0,
     1993     223,     0,     0,    46,    47,     0,   957,   215,   609,     0,
     1994     414,     0,     0,     0,     0,    46,    47,   422,     8,     9,
     1995      10,    11,    12,   529,     0,     0,     0,   508,   529,     0,
     1996       0,   529,     0,     0,     0,     0,     0,   261,     0,     0,
     1997     216,     0,     0,     0,     0,  1060,     0,    31,    37,     0,
     1998     185,   186,    40,     0,   340,     0,     0,     0,   114,    41,
     1999      42,   354,     0,     0,     0,     0,     0,     0,     0,     0,
     2000      43,     0,     0,     0,     0,    34,   457,     0,     0,   329,
     2001      37,    49,   185,   186,    40,   187,     0,   261,   351,   414,
     2002       0,    41,    42,     0,    46,    47,     0,     0,     0,     0,
     2003     215,     0,    43,     0,     0,     0,   497,     0,     0,     0,
     2004       0,     0,     0,     0,     0,     0,     0,   608,   407,   609,
     2005       0,   216,     0,   114,   114,   114,    46,    47,     0,     0,
     2006     340,     0,     0,   425,     0,   450,   430,   432,     0,     0,
     2007       0,   162,     0,   584,     0,     0,     0,     0,     0,     0,
     2008       0,   588,  1299,     0,   591,     0,    76,     0,  1138,     0,
     2009       0,    76,   449,     0,     0,     0,   452,     0,   453,     0,
     2010       0,   216,     0,     0,     0,  1146,     0,   468,   766,     0,
     2011    1146,   652,     0,    67,     0,     0,   916,  1016,   482,     0,
     2012       0,     0,   827,     0,     0,   923,     0,     0,   489,   925,
     2013       0,    37,     0,   185,   186,    40,   432,     0,     0,     0,
     2014       0,     0,    41,    42,     0,     0,     0,    37,   414,   185,
     2015     186,    40,   422,    43,     0,     0,     0,     0,    41,    42,
     2016    1146,     0,     0,     0,     0,     0,     0,     0,  1531,    43,
     2017     412,     0,    79,     0,     0,     0,     0,    46,    47,     0,
     2018       0,     0,     0,     0,   267,   224,     0,    49,    49,     0,
     2019       0,     0,     0,    46,    47,     0,     0,   114,   114,     0,
     2020       0,     0,   261,     0,    79,     0,   602,     0,     0,     0,
     2021       0,   827,   630,     0,     0,   457,     0,     0,     0,     0,
     2022       0,   216,     0,   215,     0,   635,     0,     0,     0,   635,
     2023       0,     0,   261,     0,   457,     0,   114,   414,     0,     0,
     2024       0,     0,   225,     0,     0,     0,     0,     0,     0,   216,
     2025       0,     0,    76,     0,   216,   497,  1124,   324,     0,     0,
     2026       0,     0,     0,     0,     0,     0,     0,   354,     0,     0,
     2027       0,     0,    76,     0,     0,     0,     0,     0,     0,   482,
     2028      76,   543,   544,   545,   546,   547,   548,   549,   550,   551,
     2029     552,     0,     0,     0,   351,    49,   114,     0,     0,   482,
     2030       0,     0,     0,     0,     0,   114,   354,   482,     0,   868,
     2031       0,     0,     0,     0,     0,   553,     0,     0,     0,     0,
     2032      49,    49,     0,     0,   354,     0,    76,   584,   584,     0,
     2033     356,     0,     0,   723,     0,     0,   432,     0,     0,     0,
     2034       0,     0,   216,     0,     0,    49,     0,     0,     0,     0,
     2035       0,   737,     0,    67,     0,     0,   216,     0,     0,     0,
     2036       0,   432,  1100,     0,     0,   432,     0,   354,     0,     0,
     2037    1146,  1146,  1146,     0,     0,     0,     0,     0,     0,     0,
     2038       0,     8,     9,    10,    11,    12,    58,    58,     0,     0,
     2039     457,   827,     0,   261,   351,     0,     0,     0,     0,     0,
     2040       0,     0,     0,   215,     0,     0,     0,     0,     0,     0,
     2041      31,     0,     0,     0,     0,   909,     0,     0,    58,   912,
     2042       0,     0,     0,     0,     0,    79,     0,     0,   766,     0,
     2043      79,   354,     0,     0,     0,     0,     0,     0,    34,   818,
     2044       0,     0,     0,    37,     0,   185,   186,    40,     0,   216,
     2045       0,     0,   414,    58,    41,    42,    58,   635,   830,     0,
     2046       0,     0,     0,     0,     0,    43,     0,     0,     0,     0,
     2047     849,     0,     0,     0,     0,   354,   354,   354,     0,     0,
     2048     697,     0,   412,     0,     0,     0,     0,     0,   602,    46,
     2049      47,     0,     0,   602,   354,     0,     0,     0,     0,   635,
     2050     215,     0,   351,   351,   351,     0,     0,     0,     0,     0,
     2051    1218,   340,   354,     0,  1146,  1146,     0,     0,     0,     0,
     2052       0,   351,     0,    76,   225,     0,     0,     0,     0,   354,
     2053       0,     0,     0,     0,     0,  1124,     0,     0,     0,   723,
     2054       0,     0,     0,     0,   349,     0,     0,     0,     0,     0,
     2055     482,     0,     0,  1485,     0,   261,   737,     0,     0,   936,
     2056       0,     0,     0,     0,     0,    76,     0,   584,   354,     0,
    20042057       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2005       73,     0,     0,   213,     0,     0,   349,     0,     0,     0,
    2006     1125,     0,     0,     0,     0,     0,     0,     0,   212,   214,
    2007        0,     0,     0,     0,   724,     0,     0,     0,     0,     0,
    2008        0,   213,    73,     0,    55,   480,   213,     0,     0,     0,
    2009      258,   738,     0,     0,   938,     0,   212,   214,     0,     0,
    2010        0,   212,   214,     0,     0,     0,  1331,     0,     0,     0,
    2011        0,     0,     0,     0,     0,   175,     0,   221,     0,   535,
    2012        0,     0,     0,     0,     0,     0,     0,   480,     0,     0,
    2013      349,     0,     0,   729,   729,     0,     0,     0,   728,   964,
    2014        0,     0,   430,     0,     0,     0,   728,   728,   728,     0,
    2015        0,   460,     0,  1125,     0,     0,     0,     0,     0,     0,
    2016        0,     0,     0,   601,   608,   994,   258,   738,     0,     0,
    2017        0,     0,   992,     0,   213,   632,   633,     0,     0,   125,
    2018      125,   125,     0,     0,     0,     0,     0,     0,   213,   212,
    2019      214,   729,   729,     0,   728,     0,     0,     0,     0,     0,
    2020        0,     0,     0,   212,   214,   352,     0,     0,     0,   724,
    2021        0,     0,   535,     0,     0,     0,     0,     0,     0,   724,
    2022        0,     0,   349,   506,   636,     0,     0,  1024,   636,   832,
    2023        0,     0,   821,   822,   724,     0,     0,     0,     0,     0,
    2024        0,     0,     0,     0,  1035,     0,     0,     0,     0,     0,
    2025      125,     0,   125,     0,     0,     0,  1125,     8,     9,    10,
    2026       11,    12,   856,     0,     0,   859,   860,     0,   863,     0,
    2027      865,   866,     0,     0,     0,   867,   868,   274,     0,   448,
    2028        0,   175,   213,     0,     0,     0,    31,     0,  1507,     0,
    2029     1507,     0,     0,     0,     0,     0,    64,   212,   214,     0,
    2030       73,     0,     0,     0,     0,    73,   412,     0,     0,     0,
    2031        0,     0,     0,   420,    34,     0,     0,     0,   636,    37,
    2032        0,   182,   183,    40,     0,  1507,     0,  1507,     0,     0,
    2033       41,    42,     0,   125,     0,  1332,     0,     0,     0,     0,
    2034        0,   125,     0,   125,   125,     0,     0,     0,   125,     0,
    2035      125,   125,     0,     0,  1117,   323,  1532,     0,   410,   943,
    2036      944,     0,   430,   116,     0,   946,  1533,   729,     0,     8,
    2037        9,    10,    11,    12,     0,   729,   729,   729,     0,     0,
    2038      349,     0,     0,     0,     0,   412,     0,     0,     0,     8,
    2039        9,    10,    11,    12,     0,     0,     0,     0,    31,     0,
    2040      221,     0,     0,     0,     0,     0,   535,     0,     0,     0,
    2041        0,     0,     0,     0,     0,   603,     0,     0,    31,     0,
    2042      125,     0,     0,   729,     0,     0,    34,     0,   428,     0,
    2043        0,    37,     0,   724,   724,    40,   349,   349,     0,     0,
    2044        0,   584,    41,    42,     0,     0,    34,   517,     0,   588,
    2045        0,    37,   591,   182,   183,    40,  1204,     0,     0,     0,
    2046        0,     0,    41,    42,     0,     0,     0,    73,    43,     0,
    2047        0,    76,     0,     0,   213,     0,     0,     0,   146,     0,
    2048        0,     0,   352,     0,     0,     0,     0,    73,   264,   212,
    2049      214,   724,   724,     0,     0,    73,     0,   636,   265,     0,
    2050        0,     0,     0,    76,     0,     0,     0,     0,     0,     0,
    2051        0,     0,     0,     0,     0,   412,     0,     0,     0,   420,
    2052        0,   352,     0,     0,  1508,     0,  1508,     0,   544,   545,
    2053      546,   547,   548,   549,   550,   551,   552,   553,   222,   352,
    2054        0,    73,     0,     0,   952,     0,   953,     0,     0,     0,
    2055        0,     0,     0,   956,   957,     0,   738,     0,   962,     0,
    2056        0,  1508,   554,  1508,   535,     8,     9,    10,    11,    12,
    2057      967,     0,     0,     0,     0,   971,     0,     0,     0,   175,
    2058        0,     0,     0,   352,     0,     0,     0,     0,     0,     0,
    2059        0,     0,     0,     0,    31,     0,     0,     0,     0,  1301,
    2060        0,  1000,     0,     0,   412,     0,     0,     0,     0,     0,
    2061        0,     0,     0,     0,     0,     0,   258,     0,     0,     0,
    2062        0,    64,    34,     0,     0,     0,   354,    37,     0,     0,
    2063        0,    40,     0,     0,     0,   724,     0,   738,    41,    42,
    2064        0,   116,     0,     0,     0,     0,   601,     0,   352,     0,
    2065        0,     0,     0,     0,   213,     0,     0,     0,     0,     0,
    2066        0,     0,     0,     0,   744,     0,     0,   724,     0,   212,
    2067      214,     0,     0,     0,   745,   724,   724,   724,     0,     0,
    2068        0,     0,     0,     0,     0,     0,   349,   349,     0,     0,
    2069        0,     0,     0,   352,   352,   352,   584,   584,     0,     0,
    2070     1204,     0,     0,  1045,  1046,  1047,  1048,     0,  1050,     0,
    2071        0,     0,   352,     0,     0,     0,     0,     0,     0,     0,
    2072        0,    76,     0,   724,  1094,     0,    76,     0,     0,     0,
    2073      352,     0,     0,     0,   116,   125,   125,     0,  1100,     0,
    2074        0,    73,     0,     0,     0,     0,     0,   352,     0,  1234,
    2075        0,   213,     0,     0,     0,     0,   175,     0,     0,     0,
    2076        0,     0,     0,     0,     0,   125,   212,   214,   125,   125,
    2077        0,   125,     0,   125,   125,     0,     0,  1116,   125,   125,
    2078        0,     0,     0,    73,     0,   911,   352,     0,     0,   914,
     2058       0,     0,     0,     0,     0,    81,     0,     0,     0,     0,
     2059       0,    79,   482,     0,     0,   351,     8,     9,    10,    11,
     2060      12,     0,     0,     0,   962,   354,   356,   432,     0,    58,
     2061       0,    79,     0,  1535,     0,     0,     0,    81,     0,    79,
     2062       0,     0,  1543,     0,     0,    31,     0,     0,  1124,     0,
     2063       0,   261,   737,     0,     0,     0,     0,   990,     0,    58,
     2064       0,     0,   216,     0,     0,   356,     0,   354,     0,     0,
     2065       0,     0,     0,    34,     0,   226,     0,   354,    37,   354,
     2066     185,   186,    40,   356,   224,    79,     0,   354,     0,    41,
     2067      42,   354,     0,     0,   723,     0,     0,     0,     0,   414,
     2068      43,     0,     0,     0,   723,     0,   351,     0,   635,     0,
     2069       0,  1023,     0,   635,   830,  1531,     0,   412,   723,     0,
     2070       0,     0,     0,     0,    46,    47,   356,     0,  1034,     0,
     2071       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2072       0,     0,     0,     0,     0,    88,     0,     0,     0,     0,
     2073       0,  1124,     0,    76,     0,     0,     0,     0,     0,     0,
     2074       0,     0,     0,   357,     0,     0,     0,     0,     0,     0,
     2075       0,     0,  1387,     0,     0,     0,     0,    88,  1157,     0,
     2076      67,     0,     0,  1506,     0,  1506,     0,     0,     0,     0,
     2077     356,     0,     0,     0,     0,  1169,     0,     0,     0,     0,
     2078       0,     0,   635,     8,     9,    10,    11,    12,     0,     0,
     2079       0,     0,     0,     0,     0,   227,     0,     0,     0,     0,
     2080    1506,     0,  1506,     0,     0,     0,     0,     0,     0,     0,
     2081       0,     0,    31,     0,   356,   356,   356,   354,  1116,     0,
     2082     349,     0,   216,     0,     0,     0,   432,   119,     0,     0,
     2083     324,     0,     0,   356,     0,     0,     0,     0,    81,     0,
     2084      34,     0,     0,    81,   351,    37,     0,   185,   186,    40,
     2085       0,   356,  1237,     0,     0,     0,    41,    42,     0,     0,
     2086       0,     0,    79,     0,     0,     0,     0,    43,   356,     0,
     2087       0,   354,   354,     0,   354,   354,     0,     0,     0,    58,
     2088     602,     0,   187,   364,     0,     0,     0,     0,     0,     0,
     2089       0,    46,    47,   430,    76,     0,     0,     0,   723,   723,
     2090       0,   351,   351,     0,    79,     0,     0,   356,     0,     0,
     2091       0,  1504,     0,  1508,     0,     0,     0,     0,     0,   216,
     2092     349,  1203,     0,     0,     0,     0,     0,     0,     0,   354,
     2093     354,     0,     0,     0,     0,     0,     0,   226,     0,     0,
     2094       0,     0,     0,     0,   356,     0,     0,     0,  1537,     0,
     2095    1539,     0,     0,     0,     0,     0,   723,   723,     0,   126,
     2096     129,   130,   635,     0,     0,     0,     0,     0,     0,     0,
     2097       0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
     2098       0,     0,     0,    88,   349,     0,   356,     0,     0,     0,
     2099       0,     0,     0,  1568,   354,  1569,   356,     0,   356,     0,
     2100       0,     0,     0,   225,    81,     0,   356,     0,  1576,  1577,
     2101     356,     0,     0,     0,     0,     0,     0,     0,     0,   357,
     2102       0,   737,     0,     0,    81,     0,     0,     0,   349,   349,
     2103     349,     0,    81,   256,     0,   257,     0,   224,     0,     0,
     2104       0,     0,     0,     0,     0,     0,     0,   349,     0,     0,
     2105       0,     0,     0,     0,     0,     0,     0,     0,   357,    76,
     2106       0,     0,     0,     0,  1300,     0,     0,     0,     0,     0,
     2107       0,     0,    79,   354,     0,   354,   357,   227,    81,     0,
     2108       0,     0,   261,     0,     0,     0,    67,     0,     0,     0,
     2109       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2110     723,     0,   737,     0,     0,   354,   119,     0,     0,     0,
     2111       0,     0,     0,   354,   354,   354,   397,     0,     0,   357,
     2112       0,   349,     0,     0,   354,   354,   416,   417,     0,     0,
     2113       0,   421,   723,   423,   424,     0,     0,     0,    76,     0,
     2114     723,   723,   723,     0,    88,     0,     0,     0,     0,     0,
     2115       0,   351,   351,     0,     0,     0,   356,     0,     0,   364,
     2116       0,   354,     0,     0,    88,  1203,     0,     0,     0,     0,
     2117       0,     0,    88,     0,     8,     9,    10,    11,    12,     0,
     2118       0,     0,     0,   357,     0,     0,     0,     0,   723,     0,
     2119       0,     0,     0,     0,     0,     0,     0,     0,   364,   119,
     2120       0,     0,     0,    31,     0,     8,     9,    10,    11,    12,
     2121     356,   356,   349,   356,   356,     0,   364,     0,    88,     0,
     2122     349,     0,     0,     0,     0,     0,     0,   357,   357,   357,
     2123       0,    34,     0,    79,    31,     0,    37,     0,   185,   186,
     2124      40,     0,     0,     0,     0,     0,   357,    41,    42,   354,
     2125       0,     0,     0,     0,     0,     0,     0,     0,    43,   364,
     2126       0,     0,    34,     0,   357,     0,     0,    37,   356,   356,
     2127       0,    40,     0,   267,     0,    81,   351,     0,    41,    42,
     2128       0,   357,    46,    47,     0,     0,    58,     0,     0,    43,
     2129       0,     0,     0,     0,   169,     0,   174,     0,    76,   180,
     2130     181,   182,   119,   184,    44,    76,     0,     0,     0,     0,
     2131       0,     0,     0,    46,    47,     0,     0,    81,   235,     0,
     2132     357,     0,     0,   364,     0,  1203,     0,     0,     0,     0,
     2133     250,   251,  1203,   356,     8,     9,    10,    11,    12,     0,
     2134       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2135       0,     0,     0,    58,     0,     0,     0,   357,    76,     0,
     2136       0,     0,     0,    31,     0,     0,     0,   364,   364,   364,
     2137     349,     0,     0,     0,     0,     0,   225,     0,   516,     0,
     2138     518,   521,     0,     0,     0,  1203,   364,     0,   524,   525,
     2139       0,    34,  1556,     0,     0,     0,    37,     0,    79,   357,
     2140      40,     0,   518,   518,   364,     0,     0,    41,    42,   357,
     2141       0,   357,   356,     0,   356,    88,   226,     0,    43,   357,
     2142       0,   364,     0,   357,     0,     0,     0,   349,   349,     0,
     2143       0,     0,     0,   743,     0,     0,     0,     0,     0,     0,
     2144     518,     0,    46,    47,   356,   284,   285,    58,   286,     0,
     2145       0,     0,   356,   356,   356,     0,     0,    88,     0,     0,
     2146     364,     0,     0,   356,   356,     0,     0,     0,     0,     0,
     2147       0,     0,     0,     0,   287,     0,   518,    79,     0,     0,
     2148     648,     0,   141,   142,   289,    81,     0,   290,   649,   292,
     2149     293,    41,    42,     0,   294,   295,     0,   364,     0,     0,
     2150     356,     0,    43,     0,     0,     0,     0,     0,     0,     0,
     2151       0,     0,     0,     0,     0,   820,   821,   296,     0,   650,
     2152       0,   651,   381,     0,     0,     0,    46,    47,   298,   299,
     2153     300,   301,     0,     0,     0,     0,     0,     0,     0,   364,
     2154       0,     0,     0,     0,   854,     0,     0,   857,   858,   364,
     2155     861,   364,   863,   864,     0,     0,   227,   865,   866,   364,
     2156       0,     0,     0,   364,     0,     0,     0,     0,     0,   357,
     2157       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2158       0,     0,     0,     0,     0,   599,     0,   607,   356,    58,
     2159      58,     0,     0,     0,     0,     0,     0,     0,   631,   632,
     2160       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2161       0,     0,    58,     0,     0,     0,     0,     0,     0,     0,
     2162       0,     0,     0,   357,   357,    88,   357,   357,     0,     0,
     2163       0,     0,    58,     0,     0,     0,     0,    79,     0,     0,
     2164       0,   941,   942,     0,    79,     0,    81,   944,     0,     0,
     2165       0,   518,   518,   518,   518,   518,   518,   518,   518,   518,
     2166     518,   518,   518,   518,   518,   518,   518,   518,   518,     0,
     2167       0,   284,   285,     0,   286,     0,     0,   349,   349,     0,
     2168       0,   357,   357,     0,     0,     0,    58,     0,     0,     0,
     2169       0,    58,     0,     0,     0,     0,     0,    79,     0,     0,
     2170     287,     0,     0,     0,     0,     0,   288,     0,     0,   364,
     2171     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2172     294,   295,     0,     0,     0,    58,     0,     0,    43,     0,
     2173       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2174       0,     0,     0,   296,     0,   380,   357,     0,   381,     0,
     2175       0,     0,    46,    47,   298,   299,   300,   301,     0,     0,
     2176       0,     0,     0,   364,   364,     0,   364,   364,     0,     0,
     2177       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2178       0,     0,     0,     0,     0,     0,    88,     0,     0,   226,
     2179       0,     0,   518,     0,     0,     0,     0,     0,     0,     0,
     2180       0,     0,   349,     0,     0,     0,     0,     0,     0,     0,
     2181       0,    81,     0,     0,   518,     0,     0,     0,     0,     0,
     2182       0,   364,   364,     0,     0,   357,     0,   357,    58,     0,
     2183       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2184      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2185    -295,    58,    26,    27,    28,     0,     0,   357,    58,     0,
     2186       0,    31,     0,     0,     0,   357,   357,   357,     0,     0,
     2187       0,     0,     0,   518,     0,     0,   357,   357,     0,     0,
     2188       0,     0,     0,     0,     0,     0,   364,     0,     0,    34,
     2189      81,     0,     0,     0,     0,     0,    38,    39,     0,     0,
     2190    -295,     0,     0,   284,   285,   518,   286,     0,     0,     0,
     2191       0,    58,     0,   357,     0,     0,    43,     0,     0,     0,
     2192       0,     0,     0,     0,     0,     0,     0,     0,     0,   227,
     2193       0,   642,   287,   339,     0,     0,     0,     0,   288,     0,
     2194      46,    47,   289,     0,     0,   290,   291,   292,   293,    41,
     2195      42,    88,   294,   295,     0,     0,     0,     0,     0,     0,
     2196      43,     0,     0,     0,   950,   364,   951,   364,     0,     0,
     2197       0,     0,     0,   954,   955,   296,     0,   380,   960,     0,
     2198       0,     0,     0,   811,    46,    47,   298,   299,   300,   301,
     2199     965,     0,     0,     0,     0,   969,     0,   364,     0,   284,
     2200     285,   357,   286,     0,     0,   364,   364,   364,     0,     0,
     2201       0,     0,     0,     0,     0,     0,   364,   364,     0,     0,
     2202       0,   998,     0,     0,     0,     0,     0,     0,   287,     0,
     2203      88,  1233,     0,     0,   288,     0,     0,     0,   289,     0,
     2204       0,   290,   291,   292,   293,    41,    42,     0,   294,   295,
     2205      81,     0,     0,   364,     0,     0,    43,    81,     0,     0,
     2206       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2207     518,   296,     0,   380,     0,     0,     0,     0,   780,   167,
     2208      46,    47,   298,   299,   300,   301,     0,     0,     0,     0,
     2209       0,     0,     0,     0,     0,     0,   220,     0,     0,     0,
     2210       0,   518,     0,     0,     0,     0,     0,     0,     0,     0,
     2211      81,     0,     0,     0,   518,     0,     0,   284,   285,     0,
     2212     286,     0,  1044,  1045,  1046,  1047,     0,  1049,     0,     0,
     2213       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2214       0,   364,     0,  1093,   167,     0,   287,     0,   274,     0,
     2215       0,     0,   288,     0,  1321,   518,   289,  1099,     0,   290,
     2216     291,   292,   293,    41,    42,     0,   294,   295,     0,     0,
     2217       0,   213,     0,     0,    43,     0,     0,   167,     0,     0,
     2218       0,   233,     0,   237,     0,   239,     0,   370,     0,   515,
     2219      88,   376,   248,     0,     0,     0,  1115,    88,    46,    47,
     2220     298,   299,   300,   301,     0,     0,     0,     0,     0,     0,
     2221       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,     0,   213,     0,   237,   239,   248,   518,     0,
     2223       0,     0,     0,     0,     0,     0,  1143,     0,     0,     0,
     2224     167,     0,     0,  1151,     0,     0,     0,     0,  1155,     0,
     2225      88,     0,   220,  1159,     0,  1160,     0,     0,     0,  1162,
     2226       0,  1163,  1164,     0,     0,  1167,   213,     0,     0,     0,
     2227     167,   463,     0,     0,  1179,     0,     0,     0,     0,     0,
     2228       0,     0,     0,     0,     0,     0,   518,   518,     0,     0,
     2229       0,     0,  1194,  1195,     0,   376,     0,     0,     0,     0,
     2230       0,     0,   167,     0,     0,     0,     0,     0,     0,     0,
     2231       0,     0,     0,     0,     0,     0,     0,     0,     0,  1225,
     2232       0,     0,  1227,     0,     0,   463,     0,   213,     0,   237,
     2233     239,   248,     0,     0,     0,     0,     0,   167,   128,   128,
     2234     128,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2235      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2236    -295,  1243,    26,    27,    28,   213,     0,  1247,  1248,     0,
     2237     213,    31,     0,     0,     0,   605,     0,     0,     0,  1259,
     2238     629,     0,     0,     0,  1263,   506,     0,  1267,     0,  1268,
     2239       0,     0,  1270,     0,     0,     0,     0,     0,     0,    34,
     2240       0,     0,     0,     0,    37,  1278,   337,   338,    40,     0,
     2241    -295,     0,   128,     0,   128,    41,    42,     0,  1285,     0,
     2242    1287,  1288,  1289,  1290,     0,     0,    43,     0,     0,     0,
     2243       0,     0,     0,   213,     0,     0,  1297,     0,  1298,   277,
     2244       0,   642,   174,   339,     0,     0,     0,     0,     0,     0,
     2245      46,    47,     0,     0,     0,   213,   167,   167,     0,     0,
     2246     237,   239,     0,   370,     0,     0,     0,     0,   248,     0,
     2247       0,  1326,  1327,     0,     0,     0,     0,     0,     0,     0,
     2248       0,     0,     0,     0,   463,     0,     0,   463,     0,     0,
     2249       0,     0,     0,     0,     0,   128,     0,   518,     0,     0,
     2250       0,     0,     0,   128,     0,   128,   128,     0,     0,     0,
     2251     128,   213,   128,   128,   518,     0,     0,     0,     0,     0,
     2252     740,     0,     0,  1362,  1363,     0,     0,     0,     0,   213,
     2253       0,     0,   167,  1373,   213,     0,   213,     0,     0,     0,
     2254       0,     0,     0,     0,   463,     0,   463,     0,     0,   463,
     2255       0,   167,   463,   213,     0,     0,   213,   213,     0,     0,
     2256       0,     0,     0,   370,     0,     0,     0,     0,     0,     0,
     2257       0,     0,   213,  1033,     0,     0,     8,     9,    10,    11,
     2258      12,     0,   128,     0,     0,  1406,   213,   518,   518,     0,
     2259       0,     0,     0,   213,     0,     0,     0,  1410,     0,  1411,
     2260    1412,  1413,     0,   284,   285,    31,   286,     0,     0,     0,
     2261       0,  1417,     0,     0,     0,   167,   158,     0,     0,     0,
     2262    1428,     0,     0,     0,     0,     0,     0,   370,     0,     0,
     2263       0,   835,   287,    34,     0,     0,  1441,     0,   288,     0,
     2264       0,     0,   289,     0,     0,   290,   291,   292,   293,    41,
     2265      42,     0,   294,   295,     0,     0,     0,   605,     0,     0,
     2266      43,     0,   605,     0,   253,     0,     0,     0,     0,     0,
     2267       0,   370,   370,   370,   258,   296,     0,   380,     0,     0,
     2268       0,     0,     0,     0,   345,    47,   298,   299,   300,   301,
     2269     370,     0,  1490,  1491,     0,     0,     0,     0,     0,     0,
     2270       0,     0,     0,     0,     0,  1496,   213,     0,     0,     0,
     2271       0,     0,  1496,   284,   285,     0,   286,     0,     0,     0,
     2272       0,     0,     0,     0,     0,   740,     0,     0,     0,     0,
     2273     158,     0,     0,     0,   213,     0,     0,     0,     0,   213,
     2274       0,     0,   287,     0,   387,  1530,   463,     0,   288,  1536,
     2275       0,     0,   289,     0,     0,   290,   291,   292,   293,    41,
     2276      42,     0,   294,   295,   370,     0,   959,   419,     0,     0,
     2277      43,     0,     0,     0,     0,     0,     0,     0,  1558,     0,
     2278    1559,   434,     0,     0,     0,   296,     0,   380,     0,     0,
     2279     439,     0,     0,     0,    46,    47,   298,   299,   300,   301,
     2280     447,   740,     0,     0,     0,     0,     0,     0,  1574,  1575,
     2281       0,     0,     0,     0,     0,     0,  1578,  1579,     0,     0,
     2282       0,     0,     0,     0,     0,   473,     0,   213,     0,     0,
     2283     483,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2284       0,   213,     0,   491,     0,     0,     0,     0,     0,   501,
     2285       0,   505,     0,     0,     0,   370,     0,     0,     0,   629,
     2286       0,   506,     0,   370,     0,     0,     0,     0,   534,     0,
     2287       0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
     2288      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2289      22,    23,    24,    25,   128,   128,    26,    27,    28,     0,
     2290       0,     0,     0,     0,     0,    31,   455,     0,     0,     0,
     2291     593,     0,     0,     0,     0,   598,     0,     0,     0,     0,
     2292       0,     0,   213,   128,     0,     0,   128,   128,     0,   128,
     2293       0,   128,   128,    34,   213,     0,   128,   128,     0,     0,
     2294      38,    39,     0,     0,   643,     0,     0,     0,   644,   645,
     2295       0,   647,     0,   213,     0,   463,     0,     0,   659,   660,
     2296      43,   661,   662,     0,   663,     0,   664,     0,     0,     0,
     2297       0,     0,     0,     0,   463,     0,     0,   456,     0,     0,
     2298       0,   710,     0,   593,    46,    47,     0,     0,     0,     0,
     2299       0,   679,     0,     0,     0,     0,     0,   167,     0,     0,
     2300       0,     0,     0,  1177,     0,     0,     8,     9,    10,    11,
     2301      12,     0,     0,   370,     0,   128,   690,     0,     0,     0,
     2302     128,   128,     0,     0,     0,     0,   128,   696,     0,     0,
     2303       0,     0,     0,   284,   285,    31,   286,     0,     0,     0,
     2304     213,     0,     0,     0,     0,     0,     0,     0,     0,   605,
     2305     732,     0,     0,     0,     0,     0,   735,     0,     0,     0,
     2306       0,   473,   287,    34,     0,     0,   213,     0,   288,     0,
     2307     370,   370,   289,     0,     0,   290,   291,   292,   293,    41,
     2308      42,     0,   294,   295,     0,     0,     0,     0,     0,     0,
     2309      43,     0,     0,     0,   213,     0,     0,   772,     0,     0,
     2310       0,     0,     0,     0,     0,   296,     0,   380,     0,     0,
     2311       0,   787,     0,     0,  1178,    47,   298,   299,   300,   301,
     2312       0,     0,     0,     0,     0,     0,     0,   213,     0,     0,
     2313     463,     0,     0,     0,     0,     0,     0,     0,   213,     0,
     2314       0,     0,     0,     0,     0,     0,     0,     0,     0,   814,
     2315       0,     0,   284,   285,     0,   286,     0,     0,   824,   342,
     2316     365,     0,     0,     0,     0,   826,     0,     0,     0,     0,
     2317       0,   834,     0,     0,     0,     0,     0,     0,     0,     0,
     2318     848,   287,     0,     0,     0,     0,     0,   288,     0,     0,
     2319     740,   289,     0,   415,   290,   291,   292,   293,    41,    42,
     2320     415,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2321       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2322     213,   888,     0,     0,   296,     0,   380,     0,     0,   991,
     2323       0,     0,   220,    46,    47,   298,   299,   300,   301,     0,
     2324       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2325       0,     0,     0,     0,     0,     0,     0,   834,     0,     0,
     2326       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2327       0,   740,   415,     0,     0,     1,     2,   208,     4,     5,
     2328       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2329      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2330    -295,     0,    26,    27,    28,    29,     0,   213,    30,     0,
     2331       0,    31,   253,     0,     0,     0,     0,     0,     0,     0,
     2332     370,   370,   966,   967,     0,     0,   415,     0,     0,   220,
     2333       0,     0,     0,     0,   415,   589,   984,   415,   592,    34,
     2334       0,    35,     0,    36,     0,     0,    38,    39,   365,     0,
     2335    -295,     0,   621,   999,     0,  1000,     0,     0,     0,  1004,
     2336       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
     2337       0,   639,     0,     0,   342,     0,     0,     0,     0,     0,
     2338       0,     0,     0,    45,     0,     0,     0,     0,     0,     0,
     2339      46,    47,     0,     0,     0,     0,     0,     0,     0,     0,
     2340       0,   415,     0,     0,   213,   415,     0,     0,     0,     0,
     2341     128,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2342       0,     0,     0,     0,  1038,     0,     0,     0,     0,     0,
     2343       0,  1039,     0,     0,     0,     0,   365,     0,     0,     0,
     2344       0,     0,     0,     0,  1041,   370,  1042,     0,     0,     0,
     2345       0,     0,     0,     0,     0,     0,     0,     0,     0,   415,
     2346    1054,     0,     0,     0,     0,     0,     0,  1058,     0,     0,
     2347       0,     0,     0,     0,     0,     0,   322,     0,     0,  1096,
     2348       0,     0,  1097,     0,     0,     0,   347,     0,     0,     0,
     2349     415,     0,     0,   365,     0,     0,     0,     0,   383,   383,
     2350     598,     0,     0,   463,     0,   463,     0,     0,     8,     9,
     2351      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2352      20,    21,    22,    23,    24,    25,  -295,     0,    26,    27,
     2353      28,     0,   415,   128,     0,   342,   365,    31,     0,     0,
     2354     463,     0,   463,     0,     0,     0,     8,     9,    10,    11,
     2355      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2356      22,    23,    24,    25,  -295,    34,     0,     0,     0,   322,
     2357     167,     0,    38,    39,     0,    31,  -295,     0,     0,     0,
     2358     415,   415,     0,     0,     0,     0,     0,     0,     0,  1161,
     2359       0,     0,    43,   487,     0,     0,     0,     0,     0,   828,
     2360     365,     0,     0,    34,     0,     0,     0,     0,     0,   339,
     2361     621,     0,   621,   621,  -295,     0,    46,    47,     0,   621,
     2362       0,     0,     0,     0,     0,     0,     0,     0,     0,   867,
     2363     365,     0,     0,     0,     0,   365,     0,     0,     0,     0,
     2364       0,     0,     0,     0,   365,   365,   365,   534,     0,     0,
     2365       0,     0,     0,  1226,     0,     0,     0,     0,     0,     0,
     2366     213,     0,     0,   365,     0,     0,     0,     0,   415,   910,
     2367       0,     0,   415,   913,     0,     0,     0,     0,     0,   915,
     2368       0,     0,     0,  1240,     0,     0,     0,     0,  1242,     0,
     2369       0,     0,     0,     0,     0,     0,  1246,   342,   365,   415,
     2370       0,   415,     0,     0,     0,   415,     0,     0,     0,   383,
     2371       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2372       0,     0,     0,     0,     0,     0,     0,  1272,     0,     0,
     2373       0,     0,     0,     0,     0,     0,     0,   365,   621,  1280,
     2374       0,     0,  1281,     0,  1282,     0,     0,     0,     0,     0,
     2375       0,     0,     0,     0,     0,     0,     0,     0,  1291,  1292,
     2376       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2377       0,     0,     0,   342,   365,     0,     0,     0,   415,   415,
     2378    1305,   207,     2,   208,     4,     5,     6,     7,     8,     9,
     2379      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2380      20,    21,    22,    23,    24,    25,     0,  1328,    26,    27,
     2381      28,   734,     0,     0,     0,     0,     0,    31,     0,     0,
     2382     415,     0,     0,     0,     0,     0,     0,     0,   365,     0,
     2383       0,     0,     0,     0,     0,   828,   365,     0,     0,   621,
     2384       0,   621,     0,     0,     0,    34,     0,    35,     0,    36,
     2385     768,   621,   209,    39,     0,     0,     0,     0,     0,     0,
     2386       0,     0,   781,     0,     0,     0,     0,   768,     0,     0,
     2387     768,     0,    43,     0,     0,     0,     0,     0,     0,     0,
     2388       0,   791,   792,     0,     0,     0,     0,     0,     0,   210,
     2389       0,     0,     0,     0,     0,     0,    46,    47,     0,     0,
     2390       0,     0,     0,     0,   813,  1398,     0,  1399,     0,     0,
     2391       0,     0,     0,     0,   822,     0,     0,     0,     0,     0,
     2392    1408,   347,  1409,     0,   828,     0,   781,     0,     0,     0,
     2393       0,     0,   415,     0,     0,     0,     0,     0,   415,     0,
     2394    1416,     0,     0,     0,     0,     0,   415,     0,     0,     0,
     2395       0,     0,     0,     0,     0,     0,  1434,  1436,     0,   621,
     2396     621,     0,     0,     0,     0,     0,     0,     0,  1442,     0,
     2397       0,  1246,     0,     0,     0,   887,     0,     0,     0,     0,
     2398       0,     0,     0,     0,   383,     0,   365,     0,     0,     0,
     2399       0,     0,   415,  1465,     0,     0,     0,     0,     0,     0,
     2400       0,     0,  1472,     0,     0,  1474,     0,  1476,  1478,  1480,
     2401       0,   415,  1158,   284,   285,     0,   286,     0,     0,     0,
     2402       0,     0,   365,     0,   347,     0,     0,     0,   415,  1170,
     2403       0,   621,   621,  1175,     0,     0,     0,     0,     0,     0,
     2404       0,     0,   287,   365,   365,     0,     0,     0,   288,  1511,
     2405       0,  1513,   289,     0,  1246,   290,   291,   292,   293,    41,
     2406      42,     0,   294,   295,     0,     0,     0,     0,     0,  1525,
     2407      43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2408       0,     0,     0,     0,     0,   296,     0,   380,     0,     0,
     2409       0,     0,     0,     0,   733,    47,   298,   299,   300,   301,
     2410     781,     0,   989,     0,   828,   415,  1238,     0,   994,     0,
     2411       0,     0,     0,     0,     0,  1003,     0,     0,   621,     1,
     2412       2,   208,     4,     5,     6,     7,     8,     9,    10,    11,
     2413      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2414      22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
     2415       0,     0,    30,   284,   285,    31,   286,     0,  1021,  1022,
     2416       0,     0,   347,   365,     0,     0,     0,     0,     0,     0,
     2417       0,     0,     0,     0,     0,     0,   347,     0,     0,     0,
     2418       0,     0,   287,    34,     0,    35,     0,    36,   288,     0,
     2419      38,    39,   289,     0,     0,   290,   291,   292,   293,    41,
     2420      42,     0,   294,   295,     0,     0,     0,     0,     0,     0,
     2421      43,     0,     0,     0,     0,     0,  1052,     0,     0,     0,
     2422     383,     0,     0,     0,   342,   296,     0,  1076,     0,     0,
     2423       0,     0,     0,     0,    46,    47,   298,   299,   300,   301,
     2424       0,     0,     0,     0,   365,     0,     0,     0,  -130,     0,
     2425       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2426       0,     0,     0,     0,     2,   208,     4,     5,     6,     7,
    20792427       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2080       18,    19,    20,    21,    22,    23,    24,    25,  -294,     0,
    2081        0,   349,     0,     0,     0,     0,     0,  1144,     0,    31,
    2082        0,   222,   412,   352,  1152,     0,     0,     0,     0,  1156,
    2083        0,     0,     0,     0,  1160,     0,  1161,   116,     0,     0,
    2084     1163,  1164,  1165,     0,     0,  1168,     0,    34,     0,     0,
    2085        0,     0,     0,     0,  1180,     0,     0,   125,  -294,     0,
    2086     1204,     0,   125,   125,     0,   352,     0,  1204,   125,     0,
    2087        0,     0,  1195,  1196,  1323,   352,     0,     0,   352,     0,
    2088        0,     0,     0,   221,     0,   352,     0,     0,    76,     0,
    2089      352,     0,     0,     0,     0,     0,     0,     0,     0,  1226,
    2090        0,     0,  1228,   354,     0,     0,     0,     0,    76,     0,
    2091        0,     0,     0,     0,     0,     0,    76,     0,     0,     0,
    2092     1204,     0,     0,     0,     0,     0,     0,  1557,     0,     0,
    2093        0,     0,     0,     0,     0,     0,     0,   584,     0,     0,
    2094        0,  1244,   354,     0,     0,     0,     0,  1248,  1249,     0,
    2095        0,     0,    73,     0,     0,     0,     0,     0,     0,  1260,
    2096      354,     0,    76,    78,  1264,     0,     0,  1268,     0,  1269,
    2097        0,     0,  1271,     0,     0,     0,     0,     0,     0,     0,
    2098        0,     0,     0,     0,     0,  1279,     0,     0,     0,     0,
    2099        0,     0,     0,     0,     0,    78,   281,   282,  1286,   283,
    2100     1288,  1289,  1290,  1291,   354,     0,     0,     0,     0,     0,
    2101        0,     0,     0,     0,     0,     0,  1298,     0,  1299,     0,
    2102        0,     0,   171,     0,     0,   284,     0,     0,     0,     0,
    2103      223,   649,     0,   138,   139,   286,   352,     0,   287,   650,
    2104      289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
    2105      412,  1327,  1328,   293,     0,     0,     0,     0,     0,     0,
    2106        0,     0,     0,     0,     0,     0,     0,     0,   294,   354,
    2107      651,     0,   652,   379,     0,     0,     0,   296,   380,   298,
    2108      299,   300,   301,     0,     0,     0,     0,     0,     0,   352,
    2109      352,     0,   352,   352,     0,     0,     0,     0,     0,     0,
    2110        0,     0,     0,  1363,  1364,     0,     0,     0,     0,     0,
    2111        0,     0,    73,  1374,   354,   354,   354,     0,   355,     0,
    2112        0,     0,     0,     0,     0,     0,     0,     0,     0,  1158,
    2113        0,     0,     0,   354,     0,     0,     0,     0,     0,     0,
    2114        0,     0,     0,     0,     0,  1170,     0,   352,   352,     0,
    2115        0,   354,     0,     0,     0,     0,     0,     0,     0,     0,
    2116        0,     0,    76,     0,     0,  1407,     0,     0,   354,     0,
    2117        0,     0,     0,     0,     0,     0,     0,  1411,     0,  1412,
    2118     1413,  1414,   281,   282,     0,   283,     0,     0,     0,     0,
    2119        0,  1418,     0,     0,     0,     0,     0,     0,     0,     0,
    2120     1429,     0,     0,     0,    76,     0,     0,   354,     0,     0,
    2121        0,   284,   352,    78,     0,     0,  1442,   285,    78,     0,
    2122        0,   286,  1238,     0,   287,   288,   289,   290,    41,    42,
    2123        0,   291,   292,     0,     0,     0,     0,     0,    85,   293,
    2124        0,     0,     0,     0,   354,     0,     0,     0,     0,     0,
    2125        0,     0,   125,     0,   294,   221,   378,     0,     0,   379,
    2126        0,     0,     0,   296,   380,   298,   299,   300,   301,     0,
    2127       85,     0,  1491,  1492,     0,     0,     0,    73,     0,     0,
    2128        0,     0,     0,     0,     0,  1497,   354,     0,     0,     0,
    2129        0,   352,  1497,   352,     0,     0,   354,     0,     0,   354,
    2130        0,     0,     0,     0,   222,   224,   354,     0,     0,     0,
    2131        0,   354,     0,   223,     0,     0,     0,     0,     0,     0,
    2132        0,     0,     0,   352,     0,  1531,     0,     0,     0,  1537,
    2133        0,   352,   352,   352,     0,     0,     0,     0,     0,     0,
    2134        0,     0,   352,   352,     0,     0,     0,     0,     0,     0,
    2135        0,     0,     0,     0,     0,     0,    73,     0,  1559,     0,
    2136     1560,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2137        0,     0,     0,    76,     0,     0,     0,   125,     0,   352,
    2138       78,     0,     0,     0,     0,     0,     0,     0,  1575,  1576,
    2139        0,     0,     0,   362,     0,   355,  1579,  1580,     0,     0,
    2140       78,     0,     0,     0,     0,     0,  -519,     0,    78,     1,
     2428      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2429      26,    27,    28,   365,   365,     0,   322,   284,   285,    31,
     2430     286,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2431       0,     0,  1139,  1140,     0,     0,     0,     0,     0,   383,
     2432       0,     0,     0,     0,     0,   994,   287,    34,  1149,    35,
     2433     768,    36,   288,     0,    38,    39,   289,     0,     0,   290,
     2434     291,   292,   293,    41,    42,     0,   294,   295,     0,     0,
     2435       0,  1165,     0,     0,    43,     0,     0,     0,     0,     0,
     2436       0,     0,  1180,     0,     0,     0,     0,     0,     0,   296,
     2437       0,   344,     0,     0,     0,     0,   780,     0,   345,    47,
     2438     298,   299,   300,   301,   383,     0,  1198,     0,     0,     0,
     2439       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2440       0,   994,   994,     0,     0,     0,     0,     0,     0,     0,
     2441       0,     0,     0,     0,     0,     0,     0,     0,   365,     0,
     2442       0,     0,  1230,     0,     0,     0,  -520,     0,     0,     1,
    21412443       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    21422444      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2143       22,    23,    24,    25,   355,     0,    26,    27,    28,    29,
     2445      22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
    21442446       0,     0,    30,     0,     0,    31,    32,     0,     0,     0,
    2145        0,     0,   355,     0,    78,     0,     0,   354,     0,     0,
    2146        0,     0,     0,     0,     0,     0,     0,   352,     0,     0,
     2447     994,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2448       0,     0,     0,     0,     0,     0,     0,     0,     0,   887,
    21472449      33,     0,     0,    34,     0,    35,     0,    36,    37,     0,
    2148       38,    39,    40,     0,     0,     0,     0,     0,    85,    41,
    2149       42,     0,     0,    85,     0,     0,   355,     0,  1034,     0,
    2150        0,     8,     9,    10,    11,    12,     0,     0,     0,     0,
    2151      354,   354,     0,   354,   354,    43,    73,    44,     0,     0,
    2152        0,     0,     0,    73,     0,    45,     0,     0,   281,   282,
    2153       31,   283,     0,    76,     0,     8,     9,    10,    11,    12,
    2154       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2155       23,    24,    25,  -295,     0,     0,     0,   284,    34,     0,
    2156        0,   355,     0,   285,    31,     0,     0,   286,   354,   354,
    2157      287,   288,   289,   290,    41,    42,    73,   291,   292,     0,
    2158        0,     0,     0,     0,     0,   293,     0,     0,   224,     0,
    2159        0,     0,    34,     0,     0,     0,     0,     0,     0,     0,
    2160      294,     0,   378,  -295,     0,     0,   355,   355,   355,   296,
    2161      827,   298,   299,   300,   301,     0,     0,     0,     0,     0,
    2162        0,     0,     0,     0,     0,   355,     0,     0,     0,     0,
    2163        0,     0,     0,   354,     0,     0,     0,     0,     0,     0,
    2164        0,     0,     0,   355,     0,     0,     0,     0,     0,     0,
    2165        0,     0,     0,     0,    78,    85,     0,     0,     0,   164,
    2166      355,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2167      362,     0,     0,     0,     0,    85,   222,     0,   217,     0,
    2168        0,     0,     0,    85,     0,     0,     0,     0,     0,     0,
    2169        0,     0,     0,     0,     0,     0,    78,     0,    76,   355,
    2170        0,     0,     0,     0,     0,     0,     0,     0,     0,   362,
    2171        0,     0,   354,     0,   354,     0,     0,     0,     0,     0,
    2172        0,     0,     0,     0,   164,     0,     0,   362,     0,    85,
    2173      271,     0,     0,     0,     0,     0,   355,     0,     0,     0,
    2174        0,     0,     0,     0,   354,     0,     0,     0,     0,     0,
    2175        0,     0,   354,   354,   354,     0,     0,     0,     0,   164,
    2176        0,     0,     0,   354,   354,     0,     0,     0,     0,   368,
    2177        0,   362,     0,   374,     0,     0,     0,    76,   355,     0,
    2178        0,     0,     0,     0,     0,     0,     0,     0,   355,     0,
    2179        0,   355,     0,     0,     0,     0,   223,     0,   355,     0,
    2180      354,     0,     0,   355,     8,     9,    10,    11,    12,    13,
    2181       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2182       24,    25,   164,     0,    26,    27,    28,     0,     0,     0,
    2183        0,     0,     0,    31,   217,     0,   362,     0,     0,     0,
     2450      38,    39,    40,     0,  1283,  1284,     0,     0,   415,    41,
     2451      42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2452      43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2453       0,     0,     0,   415,   415,    44,     0,    45,     0,     0,
     2454       0,     0,     0,     0,    46,    47,     0,     0,     0,     0,
     2455       0,     0,     0,     0,     0,     0,     0,     0,   415,     0,
     2456       1,     2,   208,     4,     5,     6,     7,     8,     9,    10,
     2457      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2458      21,    22,    23,    24,    25,     0,   994,    26,    27,    28,
     2459      29,     0,     0,    30,   284,   285,    31,  1061,  1062,     0,
     2460    1063,     0,     0,  1064,  1065,  1066,  1067,  1068,  1069,  1070,
     2461    1071,     0,     0,     0,  1072,     0,     0,     0,  1073,  1074,
     2462       0,    33,     0,   287,    34,     0,    35,     0,    36,  1075,
     2463       0,    38,    39,   289,     0,     0,   290,   291,   292,   293,
     2464      41,    42,     0,   294,   295,     0,     0,  1391,     0,     0,
     2465     768,    43,     0,     0,     0,     0,     0,     0,     0,     0,
     2466       0,     0,     0,     0,     0,     0,   296,     0,  1076,     0,
     2467       0,   173,     0,     0,     0,    46,    47,   298,   299,   300,
     2468     301,     0,     0,     0,     0,  1077,     0,     0,     0,  -130,
     2469       1,     2,   208,     4,     5,     6,     7,     8,     9,    10,
     2470      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2471      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2472      29,     0,     0,    30,   284,   285,    31,   286,     0,     0,
     2473       0,     0,     0,     0,     0,  1451,     0,     0,     0,     0,
    21842474       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2185        0,     0,   164,   461,     0,     0,     0,     0,     0,     0,
    2186        0,    34,     0,     0,     0,    78,     0,     0,   206,    39,
    2187        0,     0,     0,     0,     0,     0,   374,     0,     0,     0,
    2188        0,   362,   362,   362,   164,     0,     0,     0,   354,     0,
    2189        0,     0,     0,     0,   514,     0,   516,   519,     0,     0,
    2190      362,     0,     0,     0,   522,   523,     0,     0,   461,   516,
    2191      516,   164,     0,   270,     0,     0,     0,     0,   362,     0,
    2192        0,   516,     0,     0,     0,     0,     0,     0,     0,    85,
    2193        0,     0,     0,     0,     0,   362,     0,    76,   281,   282,
    2194        0,   283,     0,     0,    76,     0,     0,     0,     0,   355,
    2195        0,     0,     0,     0,     0,     0,     0,   516,   606,     0,
    2196        0,     0,     0,   630,     0,     0,     0,   284,     0,     0,
    2197        0,    85,     0,   285,   362,     0,     0,   286,     0,     0,
    2198      287,   288,   289,   290,    41,    42,     0,   291,   292,     0,
    2199        0,     0,     0,   516,     0,   293,     0,    76,     0,     0,
    2200        0,     0,   355,   355,     0,   355,   355,     0,     0,     0,
    2201      294,   362,   378,     0,     0,     0,     0,     0,   812,   296,
    2202      380,   298,   299,   300,   301,    78,     0,     0,     0,     0,
    2203        0,     0,     0,     0,     0,   210,     0,     0,     0,   164,
    2204      164,     0,     0,     0,     0,   230,   368,   234,     0,   236,
    2205        0,     0,     0,   362,     0,     0,   245,     0,     0,     0,
    2206      355,   355,     0,   362,     0,     0,   362,   461,     0,     0,
    2207      461,   224,     0,   362,     0,     0,     0,     0,   362,     0,
    2208        0,     0,     0,     0,     0,     0,     0,   210,     0,   234,
    2209      236,   245,     0,     0,     0,     0,     0,     0,     0,     0,
    2210        0,     0,     0,   741,     0,     0,     0,     0,     0,     0,
    2211        0,     0,     0,     0,     0,   164,     0,     0,     0,     0,
    2212        0,     0,     0,     0,     0,   355,     0,   461,     0,   461,
    2213      210,     0,   461,     0,   164,   461,     0,     0,     0,     0,
    2214       85,     0,     0,     0,     0,     0,     0,   368,     0,     0,
    2215        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2216        0,     0,     0,     0,     0,     0,     0,     0,   223,     0,
    2217      516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
    2218      516,   516,   516,   516,   516,   516,   516,   516,     0,     0,
    2219       78,   210,     0,   234,   236,   245,     0,     0,     0,     0,
    2220      164,     0,     0,     0,   355,     0,   355,     0,     0,     0,
    2221        0,     0,   368,   516,   606,     0,     0,   837,     0,     0,
    2222        0,     0,     0,     0,   362,     0,     0,     0,     0,   210,
    2223        0,     0,     0,   210,     0,     0,   355,     0,     0,     0,
    2224        0,     0,     0,   606,   355,   355,   355,     0,   606,   504,
    2225        0,     0,     0,     0,     0,   355,   355,   368,   368,   368,
    2226        0,     0,     0,     0,     0,     0,     0,     0,     0,    78,
    2227        0,     0,     0,     0,     0,     0,   368,   362,   362,     0,
    2228      362,   362,     0,     0,     0,     0,     0,     0,     0,     0,
    2229        0,     0,   355,     0,     0,     0,     0,     0,     0,   210,
    2230       85,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2231        0,   741,   516,     0,     0,     0,     0,     0,     0,     0,
    2232      210,     0,     0,     0,     0,   234,   236,   155,     0,     0,
    2233        0,     0,   461,   245,   516,   362,   362,     0,     0,     0,
    2234        0,     0,     0,     0,     0,     0,     0,   516,     0,     0,
    2235      368,     0,   961,     8,     9,    10,    11,    12,    13,    14,
    2236       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2237       25,     0,     0,   250,     0,     0,   210,     0,     0,     0,
    2238      355,     0,    31,   255,     0,     0,     0,   741,     0,     0,
    2239        0,     0,     0,   516,   210,     0,     0,     0,     0,   210,
    2240      362,   210,     0,     0,     0,     0,     0,     0,     0,     0,
    2241       34,     0,     0,     0,     0,     0,     0,     0,   210,     0,
    2242        0,   210,   210,     0,     0,   516,     0,     0,     0,    78,
    2243        0,     0,     0,     0,     0,     0,    78,   210,     0,   155,
    2244      516,     0,   368,   224,     0,     0,   630,     0,     0,   368,
    2245        0,   210,     0,   385,     0,     0,     0,     0,   210,     0,
    2246        0,     0,     0,     0,     0,    85,     0,     0,     0,     0,
    2247        0,     0,     0,     0,     0,     0,   417,     0,     0,   362,
    2248        0,   362,     0,     0,     0,     0,     0,     0,     0,    78,
    2249      432,     0,     0,     0,     0,     0,     0,     0,     0,   437,
    2250        0,     0,     0,     0,     0,     0,     0,     0,     0,   445,
    2251        0,   362,     0,     0,     0,     0,     0,     0,     0,   362,
    2252      362,   362,     0,     0,     0,     0,     0,     0,     0,     0,
    2253      362,   362,     0,     0,   471,     0,     0,     0,     0,   481,
    2254        0,     0,   461,     0,    85,     0,     0,     0,     0,     0,
    2255        0,     0,   489,     0,     0,     0,     0,     0,   499,     0,
    2256      503,   461,     0,     0,     0,     0,     0,   362,     0,     0,
    2257        0,     0,     0,     0,   210,     0,     0,     0,   533,     0,
    2258        0,     0,     0,     0,   164,     0,     0,     0,     0,     0,
    2259        0,   516,     0,     0,     0,     0,     0,     0,     0,     0,
    2260      368,     0,   210,     0,     0,     0,     0,   210,     0,     0,
    2261        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2262        0,   593,   516,     0,     0,     0,   598,     0,     0,     0,
    2263        0,     0,     0,     0,   516,   606,     0,     0,     0,     0,
    2264        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2265        0,     0,     0,     0,   644,   362,   368,   368,   645,   646,
    2266        0,   648,     0,     0,     0,     0,     0,     0,   660,   661,
    2267        0,   662,   663,     0,   664,   516,   665,     0,     0,     0,
    2268        0,     0,  1178,     0,     0,     8,     9,    10,    11,    12,
    2269        0,     0,     0,   593,     0,   210,     0,     0,     0,     0,
    2270        0,   680,     0,     0,    85,     0,     0,     0,     0,   210,
    2271        0,    85,   281,   282,    31,   283,   461,     0,     0,     0,
    2272        0,     0,     0,     0,     0,     0,   691,     0,     0,   504,
    2273        0,     0,     0,     0,     0,     0,     0,   697,     0,     0,
    2274        0,   284,    34,     0,     0,     0,     0,   285,   516,     0,
    2275        0,   286,     0,     0,   287,   288,   289,   290,    41,    42,
    2276      733,   291,   292,     0,    85,     0,   736,     0,     0,   293,
    2277        0,   471,     0,     0,     0,     0,   741,     0,     0,     0,
    2278        0,     0,     0,     0,   294,     0,   378,     0,     0,     0,
    2279      210,     0,   516,   296,  1179,   298,   299,   300,   301,     0,
    2280        0,     0,     0,   210,     0,     0,   516,   516,   773,     0,
    2281        0,     0,     0,     0,     0,     0,     0,     0,   217,     0,
    2282        0,     0,   210,     0,   788,     0,     0,     0,     0,     0,
    2283        0,   204,     2,   205,     4,     5,     6,     7,     8,     9,
    2284       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2285       20,    21,    22,    23,    24,    25,     0,   741,    26,    27,
    2286       28,   815,     0,     0,     0,     0,     0,    31,     0,     0,
    2287      825,     0,     0,     0,     0,     0,     0,   828,     0,     0,
    2288        0,     0,   835,     0,     0,     0,     0,     0,     0,     0,
    2289        0,     0,     0,   850,     0,    34,     0,    35,     0,    36,
    2290       37,     0,   206,    39,    40,     0,   368,   368,     0,   210,
    2291        0,    41,    42,     0,     0,   217,     0,     0,     0,     0,
    2292        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2293        0,     0,     0,     0,   890,   210,     0,    43,     0,   207,
    2294        0,     0,     0,     0,     0,     0,     0,   208,     0,     0,
    2295        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2296        0,     0,     0,   210,     0,     0,     0,     0,     0,     0,
    2297      835,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    2298       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2299       22,    23,    24,    25,  -294,   210,    26,    27,    28,     0,
    2300        0,     0,     0,     0,     0,    31,   210,     0,     0,     0,
    2301        0,     0,     0,     0,     0,     0,     0,   516,     0,     0,
    2302        0,     0,     0,     0,     0,   250,     0,     0,     0,     0,
    2303        0,   368,     0,    34,   516,   968,   969,     0,     0,     0,
    2304       38,    39,     0,     0,  -294,     0,     0,     0,     0,   986,
    2305        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2306        0,     0,     0,     0,     0,     0,  1001,     0,  1002,     0,
    2307        0,     0,  1006,     0,     0,   643,     0,   338,     0,     0,
    2308        0,     0,     0,     0,     0,   110,     0,     0,   210,   461,
    2309        0,   461,     0,     0,     0,     0,     0,     0,     0,     0,
    2310        0,     0,     0,     0,     0,     0,     0,   516,   516,     0,
    2311        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2312      281,   282,     0,   283,     0,     0,   461,     0,   461,     0,
    2313        0,     0,     0,     0,     0,     0,     0,     0,  1039,     0,
    2314        0,     0,     0,     0,     0,  1040,     0,     0,     0,   284,
    2315        0,     0,     0,     0,     0,   285,   164,     0,  1042,   286,
    2316     1043,     0,   287,   288,   289,   290,    41,    42,     0,   291,
    2317      292,     0,     0,     0,  1055,   210,     0,   293,     0,     0,
    2318        0,  1059,     0,     0,     0,     0,     0,     0,     0,     0,
    2319        0,     0,   294,  1097,   378,     0,  1098,     0,     0,   781,
    2320        0,   296,   380,   298,   299,   300,   301,     0,     0,     0,
    2321        0,     0,     0,     0,   598,     0,     0,     0,     0,     0,
    2322        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2323        0,     0,     0,     0,   341,   363,     0,     0,     0,     0,
    2324        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2325        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2326        0,     0,     0,     0,     0,     0,     0,     0,   413,     0,
    2327        0,     0,   210,     0,     0,   413,     0,     1,     2,     3,
     2475       0,     0,     0,   287,    34,     0,    35,     0,    36,   288,
     2476       0,    38,    39,   289,     0,     0,   290,   291,   292,   293,
     2477      41,    42,     0,   294,   295,     0,     0,     0,     0,     0,
     2478       0,    43,     0,     0,     0,     0,     0,     0,     0,     0,
     2479       0,     0,     0,     0,     0,     0,   296,     0,    45,     0,
     2480       0,     0,     0,     0,     0,    46,    47,   298,   299,   300,
     2481     301,     0,     0,     0,     0,     0,     0,  1517,     2,   208,
    23282482       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    23292483      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2330       24,    25,     0,  1162,    26,    27,    28,    29,     0,     0,
    2331       30,     0,     0,    31,    32,     8,     9,    10,    11,    12,
     2484      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2485       0,   284,   285,    31,   286,     0,     0,     0,     0,     0,
     2486       0,     0,     0,     0,     0,     0,     0,     0,     0,   322,
     2487       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2488     287,    34,     0,    35,     0,    36,   288,     0,    38,    39,
     2489     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2490     294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
     2491       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2492       0,     0,     0,   296,     0,   929,     0,     0,     0,     0,
     2493     780,     0,   345,    47,   298,   299,   300,   301,     2,   208,
     2494       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2495      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2496      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2497       0,   284,   285,    31,   286,     8,     9,    10,    11,    12,
    23322498      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2333       23,    24,    25,     0,     0,    26,    27,    28,    33,     0,
    2334        0,    34,     0,    35,    31,    36,    37,   413,    38,    39,
    2335       40,     0,     0,     0,     0,     0,     0,    41,    42,   533,
    2336        0,     0,     0,     0,     0,     0,  1227,     0,     0,     0,
     2499      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2500     287,    34,     0,    35,    31,    36,   288,     0,    38,    39,
     2501     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2502     294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
     2503       0,     0,    34,     0,     0,     0,     0,   112,     0,    38,
     2504      39,     0,     0,   296,     0,   929,     0,     0,    41,    42,
     2505     780,     0,    46,    47,   298,   299,   300,   301,     2,   208,
     2506       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2507      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2508      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2509       0,   284,   285,    31,   286,     0,     0,     0,     8,     9,
     2510      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2511      20,    21,    22,    23,    24,    25,  -296,     0,     0,     0,
     2512     287,    34,     0,    35,     0,    36,   288,    31,    38,    39,
     2513     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2514     294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
     2515       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2516       0,     0,     0,   296,     0,   344,  -296,     0,     0,     0,
     2517       0,     0,   345,    47,   298,   299,   300,   301,     2,   208,
     2518       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2519      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2520      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2521       0,   284,   285,    31,   286,     8,     9,    10,    11,    12,
     2522      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2523      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2524     287,    34,     0,    35,    31,    36,   288,     0,    38,    39,
     2525     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2526     294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
    23372527       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
    2338       39,     0,     0,    43,     0,    44,     0,     0,     0,  -523,
    2339        0,     0,     0,    45,     0,   321,  1241,     0,     0,     0,
    2340        0,  1243,     0,   413,     0,   345,     0,     0,     0,  1247,
    2341        0,   413,   589,     0,   413,   592,     0,   381,   381,     0,
    2342        0,     0,     0,     0,   363,     0,     0,     0,   622,     0,
     2528      39,     0,     0,   296,     0,   929,     0,     0,     0,     0,
     2529       0,     0,   345,    47,   298,   299,   300,   301,     2,   208,
     2530       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2531      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2532      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2533       0,   284,   285,    31,   286,     8,     9,    10,    11,    12,
     2534      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2535      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2536     287,    34,     0,    35,    31,    36,   288,     0,   209,    39,
     2537     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2538     294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
     2539       0,     0,    34,     0,     0,     0,     0,     0,     0,   209,
     2540      39,     0,     0,   296,     0,  1018,     0,     0,     0,     0,
     2541       0,     0,  1019,    47,   298,   299,   300,   301,     2,   208,
     2542       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2543      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2544      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2545       0,   284,   285,    31,   286,     8,     9,    10,    11,    12,
     2546      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2547      23,    24,    25,     0,     0,     0,     0,     0,     0,     0,
     2548     287,    34,     0,    35,    31,    36,   288,     0,   209,    39,
     2549     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2550     294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
     2551       0,     0,    34,     0,     0,     0,     0,     0,     0,     0,
     2552       0,     0,     0,   296,     0,   380,     0,     0,     0,     0,
     2553       0,     0,    46,    47,   298,   299,   300,   301,     1,     2,
     2554       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2555      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2556      23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
     2557       0,    30,     0,     0,    31,    32,     0,     0,     0,     0,
    23432558       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2344     1273,     0,     0,     0,     0,     0,     0,   640,     0,     0,
    2345      341,     0,  1281,     0,     0,  1282,     0,  1283,     0,     0,
    2346      281,   282,     0,   283,     0,     0,     0,     0,     0,     0,
    2347        0,  1292,  1293,     0,     0,     0,     0,   413,     0,     0,
    2348        0,   413,     0,     0,     0,     0,     0,     0,   321,   284,
    2349        0,     0,     0,  1306,     0,   285,     0,     0,     0,   286,
    2350        0,     0,   287,   288,   289,   290,    41,    42,     0,   291,
    2351      292,     0,   363,   485,     0,     0,     0,   293,     0,     0,
    2352     1329,     0,     0,     0,     0,     0,     0,     0,   210,     0,
    2353        0,     0,   294,     0,   378,   413,     0,   993,     0,     0,
    2354        0,   296,   380,   298,   299,   300,   301,     0,     0,     0,
     2559       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2560       0,     0,    34,     0,    35,     0,    36,    37,     0,    38,
     2561      39,    40,     0,     0,     0,     0,     0,     0,    41,    42,
     2562       0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
    23552563       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2356        0,     0,     0,     0,     0,     0,   413,     0,     0,   363,
    2357        0,     0,     0,     0,     1,     2,   205,     4,     5,     6,
    2358        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2359       17,    18,    19,    20,    21,    22,    23,    24,    25,  -294,
    2360        0,    26,    27,    28,    29,     0,     0,    30,     0,   413,
    2361       31,     0,   341,   363,     0,     0,     0,     0,  1399,     0,
    2362     1400,     0,     0,     0,     0,     0,     0,     0,     0,   381,
    2363        0,     0,     0,  1409,     0,  1410,     0,     0,    34,     0,
    2364       35,     0,    36,     0,     0,    38,    39,     0,     0,  -294,
    2365        0,     0,     0,  1417,     0,     0,     0,     0,   413,   413,
    2366        0,     0,     0,     0,     0,     0,     0,     0,     0,  1435,
    2367     1437,     0,     0,     0,     0,     0,     0,   830,   363,     0,
    2368      363,  1443,    44,     0,  1247,     0,     0,     0,     0,   622,
    2369      110,   622,   622,     0,     0,     0,     0,     0,   622,     0,
    2370        0,     0,     0,     0,     0,     0,  1466,     0,   869,   363,
    2371        0,     0,     0,     0,   363,  1473,     0,     0,  1475,     0,
    2372     1477,  1479,  1481,   363,   363,   363,     0,     0,     0,     0,
    2373        0,   735,     0,     0,     0,     0,     0,     0,     0,     0,
    2374        0,     0,   363,     0,     0,     0,     0,   413,   912,     0,
    2375        0,   413,   915,     0,     0,     0,     0,     0,   917,     0,
    2376        0,     0,  1512,     0,  1514,     0,     0,  1247,     0,     0,
    2377      769,     0,     0,     0,     0,     0,   341,   363,   413,     0,
    2378      413,     0,  1526,   782,   413,     0,     0,     0,     0,     0,
    2379      769,     0,     0,   769,     0,     0,     0,     0,     0,     0,
    2380        0,     0,     0,     0,   792,   793,     0,     0,     0,     0,
    2381        0,     0,     0,     0,     0,     0,   363,   622,     0,     0,
    2382        0,     0,     0,     0,     0,     0,   814,     0,     0,     0,
    2383        0,     0,     0,     0,     0,     0,   823,     0,     0,     0,
    2384        0,     0,     0,   345,     0,     0,     0,     0,   782,     0,
    2385        0,     0,   341,   363,     0,     0,     0,   413,   413,     0,
    2386        0,     0,     0,     0,     1,     2,     3,     4,     5,     6,
    2387        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2388       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2389        0,    26,    27,    28,    29,     0,     0,    30,   889,   413,
    2390       31,    32,     0,     0,     0,     0,     0,   381,   363,     0,
    2391        0,     0,     0,     0,   830,   363,     0,     0,     0,   622,
    2392        0,   622,     0,     0,     0,    33,     0,     0,    34,     0,
    2393       35,   622,    36,    37,     0,    38,    39,    40,     0,     0,
    2394        0,     0,     0,     0,    41,    42,     0,   345,     0,     0,
    2395        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2396        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2397       43,     0,    44,     0,     0,     0,     0,     0,     0,     0,
    2398       45,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2399       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2400       23,    24,    25,  -294,   830,    26,    27,    28,     0,     0,
    2401        0,     0,   413,     0,    31,     0,     0,     0,   413,     0,
    2402        0,     0,     0,   782,     0,   991,   413,     0,     0,     0,
    2403        0,   996,     0,     0,     0,     0,     0,     0,  1005,   622,
    2404      622,     0,    34,     0,     0,     0,     0,    37,     0,   336,
    2405      337,    40,     0,  -294,     0,     0,     0,     0,    41,    42,
    2406        0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
    2407        0,     0,   413,     0,     0,     0,     0,     0,     0,     0,
    2408        0,     0,  1022,  1023,   643,   345,   338,     0,     0,     0,
    2409        0,   413,  1159,     0,   634,     0,     0,     0,     0,     0,
    2410      345,   363,     0,     0,     0,     0,     0,   413,  1171,     0,
    2411      622,   622,  1176,     0,     0,     0,     0,     0,     0,     0,
    2412        0,     0,   363,   363,     0,     0,     0,     0,     0,     0,
    2413        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2414     1053,     0,     0,     0,   381,     1,     2,   205,     4,     5,
     2564       0,     0,     0,     0,    44,     0,    45,     0,     0,     0,
     2565    -524,     0,     0,    46,    47,     1,     2,     3,     4,     5,
    24152566       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    24162567      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    24172568       0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
    2418        0,    31,     0,   830,   413,  1239,     0,     0,     0,     0,
    2419        0,     0,     0,     0,     0,     0,     0,   622,     0,     0,
    2420        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2421        0,    35,     0,    36,     0,     0,    38,    39,     0,     0,
    2422      321,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2423        0,     0,     0,     0,     0,     0,  1140,  1141,     0,     0,
    2424        0,     0,   363,   381,     0,     0,     0,   281,   282,   996,
    2425      283,     0,  1150,    44,   769,     0,     0,     0,     0,     0,
    2426        0,   110,     0,     0,     0,     0,     0,     0,     0,     0,
    2427        0,     0,     0,     0,  1166,     0,   284,     0,     0,     0,
    2428        0,     0,   285,     0,     0,  1181,   286,     0,     0,   287,
    2429      288,   289,   290,    41,    42,     0,   291,   292,     0,     0,
    2430        0,     0,   341,     0,   293,   281,   282,   381,   283,  1199,
    2431        0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
    2432        0,   378,     0,   363,   996,   996,     0,     0,   296,   380,
    2433      298,   299,   300,   301,   284,     0,     0,     0,     0,     0,
    2434      285,     0,     0,     0,   286,  1231,     0,   287,   288,   289,
    2435      290,    41,    42,     0,   291,   292,     0,     0,     0,     0,
    2436        0,     0,   293,     0,     0,     0,     0,     0,     0,     0,
    2437        0,     0,   363,   363,     0,     0,     0,   294,     0,   378,
    2438        0,     0,     0,     0,     0,     0,   296,   734,   298,   299,
    2439      300,   301,     0,   996,     0,     0,     0,     0,     0,     0,
     2569       0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
    24402570       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2441        0,     0,   889,     0,     0,     0,     0,     0,     0,     0,
    2442        0,     0,     0,     0,     0,     0,     0,  1284,  1285,     0,
    2443        0,     0,     0,     0,     0,     1,     2,   205,     4,     5,
    2444        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2445       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2446        0,     0,    26,    27,    28,    29,     0,     0,    30,   281,
    2447      282,    31,  1062,  1063,     0,  1064,     0,     0,  1065,  1066,
    2448     1067,  1068,  1069,  1070,  1071,  1072,     0,     0,     0,  1073,
    2449        0,     0,     0,  1074,  1075,     0,    33,   363,   284,    34,
    2450        0,    35,     0,    36,   649,     0,    38,    39,   286,   996,
    2451        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2452        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
     2571       0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
     2572       0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
     2573       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2574       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
    24532575       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2454        0,   294,     0,  1076,     0,     0,   170,     0,     0,     0,
    2455      296,   297,   298,   299,   300,   301,     0,     0,     0,     0,
    2456     1077,     0,     0,     0,  -129,     0,     0,     0,     0,     0,
    2457     1392,     0,   769,     0,     0,     0,     0,     0,     0,     0,
    2458        0,     0,     0,     0,     0,     0,     0,   413,     8,     9,
    2459       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2460       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2461       28,     0,   413,   413,     0,     0,     0,    31,     0,     0,
    2462        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2463        0,     0,     0,     0,     0,     0,     0,   413,     0,     0,
    2464        0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2465        0,     0,   206,    39,     0,     0,     0,     0,  1452,     0,
    2466        0,     0,     0,     0,     0,     1,     2,   205,     4,     5,
    2467        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2468       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2469        0,     0,    26,    27,    28,    29,     0,   629,    30,   281,
    2470      282,    31,   283,     8,     9,    10,    11,    12,    13,    14,
    2471       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2472       25,     0,     0,    26,    27,    28,     0,     0,   284,    34,
    2473        0,    35,    31,    36,   285,     0,    38,    39,   286,     0,
    2474     1518,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2475        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2476       34,     0,     0,     0,     0,   109,     0,    38,    39,     0,
    2477        0,   294,     0,  1076,     0,     0,    41,    42,     0,     0,
    2478      296,   297,   298,   299,   300,   301,     0,     0,     0,     0,
    2479        0,     0,   321,     0,  -129,     1,     2,   205,     4,     5,
    2480        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2481       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2482        0,     0,    26,    27,    28,    29,     0,     0,    30,   281,
    2483      282,    31,   283,     8,     9,    10,    11,    12,    13,    14,
    2484       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2485       25,     0,     0,    26,    27,    28,     0,     0,   284,    34,
    2486        0,    35,    31,    36,   285,     0,    38,    39,   286,     0,
    2487        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2488        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2489       34,     0,     0,     0,     0,     0,     0,   206,    39,     0,
    2490        0,   294,     0,    44,     0,     0,     0,     0,     0,     0,
    2491      296,   297,   298,   299,   300,   301,     2,   205,     4,     5,
    2492        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2493       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2494        0,     0,    26,    27,    28,     0,     0,     0,     0,   281,
    2495      282,    31,   283,     0,     0,     0,     0,     0,     0,     0,
    2496        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2497        0,     0,     0,     0,     0,     0,     0,     0,   284,    34,
    2498        0,    35,     0,    36,   285,     0,    38,    39,   286,     0,
    2499        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2500        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2501        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2502        0,   294,     0,   343,     0,     0,     0,     0,   781,     0,
    2503      296,   344,   298,   299,   300,   301,     2,   205,     4,     5,
    2504        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2505       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2506        0,     0,    26,    27,    28,     0,     0,     0,     0,   281,
    2507      282,    31,   283,     0,     0,     0,     0,     0,     0,     0,
    2508        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2509        0,     0,     0,     0,     0,     0,     0,     0,   284,    34,
    2510        0,    35,     0,    36,   285,     0,    38,    39,   286,     0,
    2511        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2512        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2513        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2514        0,   294,     0,   931,     0,     0,     0,     0,   781,     0,
    2515      296,   344,   298,   299,   300,   301,     2,   205,     4,     5,
    2516        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2517       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2518        0,     0,    26,    27,    28,     0,     0,     0,     0,   281,
    2519      282,    31,   283,     0,     0,     0,     0,     0,     0,     0,
    2520        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2521        0,     0,     0,     0,     0,     0,     0,     0,   284,    34,
    2522        0,    35,     0,    36,   285,     0,    38,    39,   286,     0,
    2523        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2524        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2525        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2526        0,   294,     0,   931,     0,     0,     0,     0,   781,     0,
    2527      296,   600,   298,   299,   300,   301,     2,   205,     4,     5,
    2528        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2529       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2530        0,     0,    26,    27,    28,     0,     0,     0,     0,   281,
    2531      282,    31,   283,     0,     0,     0,     0,     0,     0,     0,
    2532        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2533        0,     0,     0,     0,     0,     0,     0,     0,   284,    34,
    2534        0,    35,     0,    36,   285,     0,    38,    39,   286,     0,
    2535        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2536        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2537        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2538        0,   294,     0,   343,     0,     0,     0,     0,     0,     0,
    2539      296,   344,   298,   299,   300,   301,     2,   205,     4,     5,
    2540        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2541       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2542        0,     0,    26,    27,    28,     0,     0,     0,     0,   281,
    2543      282,    31,   283,     0,     0,     0,     0,     0,     0,     0,
    2544        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2545        0,     0,     0,     0,     0,     0,     0,     0,   284,    34,
    2546        0,    35,     0,    36,   285,     0,    38,    39,   286,     0,
    2547        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2548        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2549        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2550        0,   294,     0,   931,     0,     0,     0,     0,     0,     0,
    2551      296,   344,   298,   299,   300,   301,     2,   205,     4,     5,
    2552        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2553       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2554        0,     0,    26,    27,    28,     0,     0,     0,     0,   281,
    2555      282,    31,   283,     0,     0,     0,     0,     0,     0,     0,
    2556        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2557        0,     0,     0,     0,     0,     0,     0,     0,   284,    34,
    2558        0,    35,     0,    36,   285,     0,   206,    39,   286,     0,
    2559        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2560        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2561        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2562        0,   294,     0,  1020,     0,     0,     0,     0,     0,     0,
    2563      296,  1021,   298,   299,   300,   301,     2,   205,     4,     5,
    2564        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2565       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2566        0,     0,    26,    27,    28,     0,     0,     0,     0,   281,
    2567      282,    31,   283,     0,     0,     0,     0,     0,     0,     0,
    2568        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2569        0,     0,     0,     0,     0,     0,     0,     0,   284,    34,
    2570        0,    35,     0,    36,   285,     0,   206,    39,   286,     0,
    2571        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2572        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2573        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2574        0,   294,     0,   378,     0,     0,     0,     0,     0,     0,
    2575      296,   380,   298,   299,   300,   301,   204,     2,   205,     4,
    2576        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2577       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2578       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2579        0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2576       0,    44,     0,    45,     0,     0,     0,     0,     0,     0,
     2577      46,    47,   207,     2,   208,     4,     5,     6,     7,     8,
     2578       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2579      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2580      27,    28,     0,     0,     0,     0,     0,     0,    31,     0,
     2581       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2582      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2583      26,    27,    28,   494,   495,   496,    34,     0,    35,    31,
     2584      36,    37,     0,   209,    39,    40,     0,     0,     0,     0,
     2585       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
     2586       0,     0,     0,    43,     0,     0,     0,    34,     0,     0,
     2587       0,     0,     0,     0,    38,    39,     0,     0,    44,     0,
     2588     210,     0,     0,     0,     0,     0,     0,    46,    47,     1,
     2589       2,   208,     4,     5,     6,     7,     8,     9,    10,    11,
     2590      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2591      22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
     2592       0,     0,    30,     0,     0,    31,     0,     0,     0,     0,
    25802593       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25812594       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2582       34,     0,    35,     0,    36,     0,     0,   206,    39,     0,
    2583        2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
    2584       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2585       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2586        0,     0,     0,     0,   207,    31,     0,     0,     0,     0,
    2587        0,     0,   270,     0,     0,     0,     0,     0,     0,     0,
     2595       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2596      38,    39,     0,     0,     0,     0,     0,     0,     0,     0,
    25882597       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2589        0,     0,     0,    34,     0,    35,     0,    36,    37,     0,
    2590      206,    39,    40,     0,     0,     0,     0,     0,     0,    41,
    2591       42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2592        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2593        0,     0,     0,     0,     0,    43,     0,   207,     0,     0,
    2594        0,     0,     0,     0,     0,   208,     2,   205,     4,     5,
     2598      43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2599       0,     0,     0,     0,     0,     0,     0,    45,     0,     0,
     2600       0,     0,     0,     0,    46,    47,     2,   208,     4,     5,
    25952601       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    25962602      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    25972603       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2598        0,    31,     0,     0,     0,     0,     8,     9,    10,    11,
    2599       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2600       22,    23,    24,    25,     0,     0,    26,    27,    28,    34,
    2601        0,    35,     0,    36,     0,    31,    38,    39,     0,     2,
    2602      205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2603       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2604       23,    24,    25,    34,     0,    26,    27,    28,   109,     0,
    2605       38,    39,  -402,   687,    31,     0,     0,     0,     0,    41,
    2606       42,   634,     0,     0,     0,     0,     0,     0,     0,     0,
    2607        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2608        0,     0,    34,     0,    35,     0,    36,    44,     0,    38,
    2609       39,     0,     0,     0,     0,   110,     0,     0,     0,     0,
    2610        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2611        0,  1371,     0,     0,     0,     0,     0,     0,     0,     0,
    2612        0,     0,     0,     0,     0,     0,   687,     0,     0,     0,
    2613        0,     0,     0,     0,   634,     2,   205,     4,     5,     6,
    2614        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2615       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2616        0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
    2617       31,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2618       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2619       23,    24,    25,  -294,     0,    26,    27,    28,    34,     0,
    2620       35,     0,    36,     0,    31,    38,    39,     0,     0,     0,
    2621        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2622        0,     0,     0,     0,     0,     0,     0,  1373,     0,     0,
    2623        0,     0,    34,     0,     0,     0,     0,    37,     0,   336,
    2624      337,    40,   687,  -294,     0,     0,     0,     0,    41,    42,
    2625      634,     2,   205,     4,     5,     6,     7,     8,     9,    10,
    2626       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2627       21,    22,    23,    24,    25,     0,   338,    26,    27,    28,
    2628        0,     0,     0,     0,   110,     0,    31,     0,     0,     0,
    2629        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2630        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2631        0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
    2632        0,   206,    39,     0,     2,   205,     4,     5,     6,     7,
    2633        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2634       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2635       26,    27,    28,     0,     0,     0,     0,     0,   269,    31,
    2636        0,     0,     0,     0,     0,     0,   629,     0,     0,     0,
    2637        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2638        0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
    2639        0,    36,     0,     0,    38,    39,     0,     2,   205,     4,
    2640        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2641       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2642       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2643        0,   687,    31,     0,     0,     0,     0,     0,     0,   634,
    2644        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2645        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2646       34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
    2647        2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
    2648       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2649       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2650        0,     0,     0,     0,   599,    31,     0,     0,     0,     0,
    2651        0,     0,   634,     0,     0,     0,     0,     0,     0,     0,
    2652        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2653        0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
    2654      206,    39,     8,     9,    10,    11,    12,    13,    14,    15,
    2655       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2656        0,     0,    26,    27,    28,     0,     0,     0,     0,   281,
    2657      282,    31,   283,     0,     0,     0,     0,   207,     0,     0,
    2658        0,     0,     0,     0,     0,   270,     0,     0,     0,     0,
    2659        0,     0,     0,     0,     0,     0,     0,     0,   284,    34,
    2660        0,     0,     0,     0,   285,     0,    38,    39,   286,     0,
    2661        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2662        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2663        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2664        0,   294,     0,   525,     0,     0,   170,     0,     0,     0,
    2665      296,   297,   298,   299,   300,   301,     8,     9,    10,    11,
    2666       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2667       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2668        0,     0,     0,   281,   282,    31,   283,     8,     9,    10,
    2669       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2670       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2671        0,     0,   284,    34,     0,     0,    31,     0,   285,     0,
    2672       38,    39,   286,     0,     0,   287,   288,   289,   290,    41,
    2673       42,     0,   291,   292,     0,     0,     0,     0,     0,     0,
    2674      293,     0,     0,     0,    34,     0,     0,     0,     0,    37,
    2675        0,   336,   337,    40,     0,   294,     0,   599,    -3,     0,
    2676       41,    42,     0,     0,   296,   600,   298,   299,   300,   301,
    2677        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2678       18,    19,    20,    21,    22,    23,    24,    25,   338,     0,
    2679       26,    27,    28,     0,     0,     0,   110,   281,   282,    31,
    2680      283,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2681       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2682        0,    26,    27,    28,     0,     0,   284,    34,     0,     0,
    2683       31,   453,   649,     0,    38,    39,   286,     0,     0,   287,
    2684      288,   289,   290,    41,    42,     0,   291,   292,     0,     0,
    2685        0,     0,     0,     0,   293,     0,     0,     0,    34,     0,
    2686        0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
    2687      -35,   766,     0,     0,     0,     0,     0,     0,   296,   297,
    2688      298,   299,   300,   301,     8,     9,    10,    11,    12,    13,
    2689       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2690       24,    25,   454,     0,    26,    27,    28,     0,     0,     0,
    2691      110,   281,   282,    31,   283,     0,     0,     0,     0,     0,
    2692        0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2693       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2694      284,    34,    26,    27,    28,     0,   285,     0,    38,    39,
    2695      286,    31,     0,   287,   288,   289,   290,    41,    42,     0,
    2696      291,   292,     0,     0,     0,     0,     0,     0,   293,     0,
    2697        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2698        0,     0,     0,   294,     0,   295,    38,    39,     0,     0,
    2699        0,     0,   296,   297,   298,   299,   300,   301,     8,     9,
    2700       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2701       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2702       28,   643,     0,   338,     0,   281,   282,    31,   283,     0,
    2703        0,   110,     0,     0,     0,     0,     8,     9,    10,    11,
    2704       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2705       22,    23,    24,    25,   284,    34,    26,    27,    28,     0,
    2706      285,     0,    38,    39,   286,    31,     0,   287,   288,   289,
    2707      290,    41,    42,     0,   291,   292,     0,     0,     0,     0,
    2708        0,     0,   293,     0,     0,     0,     0,     0,     0,     0,
    2709        0,     0,     0,    34,     0,     0,     0,   294,     0,   156,
    2710       38,    39,     0,     0,     0,     0,   296,   297,   298,   299,
    2711      300,   301,     8,     9,    10,    11,    12,    13,    14,    15,
    2712       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2713        0,     0,    26,    27,    28,   643,     0,   338,     0,   281,
    2714      282,    31,   283,     0,     0,   634,     0,     0,     0,     0,
    2715        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2716       18,    19,    20,    21,    22,    23,    24,    25,   284,    34,
    2717       26,    27,    28,     0,   285,     0,    38,    39,   286,    31,
    2718        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2719        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2720        0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
    2721        0,   294,     0,   599,    38,    39,     0,     0,     0,     0,
    2722      296,   600,   298,   299,   300,   301,     8,     9,    10,    11,
    2723       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2724       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2725        0,   256,     0,   281,   282,    31,   283,     0,     0,   110,
    2726        0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2727       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2728       24,    25,   284,    34,    26,    27,    28,     0,   285,     0,
    2729       38,    39,   286,    31,     0,   287,   288,   289,   290,    41,
    2730       42,     0,   291,   292,     0,     0,     0,     0,     0,     0,
    2731      293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2732        0,    34,     0,     0,     0,   294,     0,   378,    38,    39,
    2733        0,     0,     0,     0,   296,   380,   298,   299,   300,   301,
    2734      474,     2,   205,     4,     5,     6,     7,     8,     9,    10,
    2735       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2736       21,    22,    23,    24,    25,   156,     0,    26,    27,    28,
    2737        0,     0,     0,   110,     0,     0,    31,     0,     0,     0,
    2738        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2739       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2740       26,    27,    28,     0,    34,     0,    35,     0,    36,    31,
    2741        0,    38,    39,     0,     0,     0,     0,     0,     8,     9,
    2742       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2743       20,    21,    22,    23,    24,    25,     0,    34,    26,    27,
    2744       28,     0,    37,     0,    38,    39,    40,    31,     0,     0,
    2745        0,    -3,     0,    41,    42,     0,     8,     9,    10,    11,
    2746       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2747       22,    23,    24,    25,     0,    34,    26,    27,    28,    43,
    2748       37,   156,    38,    39,    40,    31,     0,     0,     0,    45,
    2749        0,    41,    42,     0,     8,     9,    10,    11,    12,    13,
    2750       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2751       24,    25,     0,    34,    26,    27,    28,    43,    37,    44,
    2752      206,    39,    40,    31,     0,     0,     0,    45,     0,    41,
    2753       42,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2754       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2755     -294,    34,    26,    27,    28,    43,    37,   269,   336,   337,
    2756       40,    31,     0,     0,     0,   208,     0,    41,    42,     0,
     2604       0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
    27572605       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27582606       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2759        0,     0,     0,   643,     0,   338,    38,    39,     0,     0,
    2760     -294,     0,     0,   634,     0,     8,     9,    10,    11,    12,
    2761       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2762       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2763        0,   643,     0,   338,    31,   453,     0,     0,     0,     0,
    2764        0,   634,     0,     8,     9,    10,    11,    12,    13,    14,
    2765       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2766       25,  -294,    34,    26,    27,    28,     0,     0,     0,    38,
    2767       39,     0,    31,     8,     9,    10,    11,    12,    13,    14,
    2768       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2769       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2770       34,     0,    31,   453,     0,     0,   454,    38,    39,     0,
    2771      711,  -294,     0,     0,   110,     0,     0,     0,     0,     0,
     2607       0,    35,     0,    36,    37,     0,   209,    39,    40,     0,
     2608       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2609       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
    27722610       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2773       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2774        0,     0,     0,     0,   338,     0,     0,     0,     0,     0,
    2775        0,     0,   110,     0,     0,     8,     9,    10,    11,    12,
    2776       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2777       23,    24,    25,     0,   454,    26,    27,    28,  1109,     0,
    2778        0,     0,   110,     0,    31,   453,     8,     9,    10,    11,
    2779       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2780       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2781        0,     0,    34,     0,     0,    31,     0,     0,     0,    38,
    2782       39,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2783       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2784       24,    25,     0,    34,    26,    27,    28,     0,     0,     0,
    2785      206,    39,     0,    31,     0,     0,   454,     0,     0,     0,
    2786     1236,     0,     0,     0,   110,     0,     0,     0,     0,     0,
    2787        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2788        0,    34,     0,     0,     0,     0,     0,   269,    38,    39,
    2789        0,     0,     0,     0,     0,   270,     0,     8,     9,    10,
    2790       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2791       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2792        0,     0,     0,     0,     0,   256,    31,     0,     0,     0,
    2793        0,     0,     0,   634,     0,     8,     9,    10,    11,    12,
    2794       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2795       23,    24,    25,     0,    34,    26,    27,    28,     0,     0,
    2796        0,    38,    39,     0,    31,     8,     9,    10,    11,    12,
    2797       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2798       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2799        0,     0,    34,     0,    31,     0,     0,     0,   338,    38,
    2800       39,     0,     0,     0,     0,     0,   634,     0,     0,     0,
    2801        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2802        0,     0,    34,     0,     0,     0,     0,     0,     0,   206,
    2803       39,     0,     0,     0,     0,     0,   454,     0,     0,     0,
    2804        0,     0,     0,     0,   110,     0,     0,     8,     9,    10,
    2805       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2806       21,    22,    23,    24,    25,     0,   269,    26,    27,    28,
    2807        0,     0,     0,     0,   629,     0,    31,     8,     9,    10,
    2808       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2809       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2810        0,     0,     0,     0,    34,     0,    31,     0,     0,     0,
    2811        0,    38,    39,     0,     0,     8,     9,    10,    11,    12,
    2812       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2813       23,    24,    25,     0,    34,    26,    27,    28,     0,     0,
    2814        0,    38,    39,     0,    31,     0,     0,     0,   599,     0,
    2815        0,     0,     0,     0,     0,     0,   634,     0,     0,     0,
    2816        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2817        0,     0,    34,     0,     0,     0,     0,     0,   338,    38,
    2818       39,     0,     0,     0,     0,     0,   110,     2,   205,     4,
    2819        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2820       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2821       25,     0,     0,    26,    27,    28,    44,     0,     0,     0,
    2822        0,     0,    31,     0,   110,     0,     0,     0,     0,     0,
    2823        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2824        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2825       34,     0,    35,     0,    36,     0,     0,    38,    39,   281,
    2826      282,     0,   283,  1063,     0,  1064,     0,     0,  1065,  1066,
    2827     1067,  1068,  1069,  1070,  1071,  1072,     0,     0,  1551,  1073,
    2828        0,     0,     0,  1074,  1075,     0,    33,     0,   284,     0,
    2829        0,     0,     0,  -415,   649,     0,     0,     0,   286,     0,
    2830        0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
    2831        0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
    2832        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2833        0,   294,     0,   378,     0,     0,   170,     0,     0,     0,
    2834      296,   380,   298,   299,   300,   301,     0,     0,     0,     0,
    2835     1077,     0,   281,   282,  -129,   283,  1063,     0,  1064,     0,
    2836        0,  1065,  1066,  1067,  1068,  1069,  1070,  1071,  1072,     0,
    2837        0,     0,  1073,     0,     0,     0,  1074,  1075,     0,    33,
    2838        0,   284,     0,     0,     0,     0,     0,   649,     0,     0,
    2839        0,   286,     0,     0,   287,   288,   289,   290,    41,    42,
    2840        0,   291,   292,     0,     0,     0,     0,     0,     0,   293,
    2841        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2842        0,     0,     0,     0,   294,     0,   378,     0,     0,   170,
    2843        0,     0,     0,   296,   380,   298,   299,   300,   301,     0,
    2844        0,     0,     0,  1077,     0,     0,     0,  -129,     2,   205,
    2845        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2846       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2847       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2848        0,     0,     0,    31,     0,   281,   282,     0,   283,  1063,
    2849        0,  1064,  1421,  1422,  1065,  1066,  1067,  1068,  1069,  1070,
    2850     1071,  1072,     0,     0,  1551,  1073,     0,     0,     0,  1074,
    2851     1075,    34,    33,    35,   284,    36,     0,     0,    38,    39,
    2852      649,     0,     0,     0,   286,     0,     0,   287,   288,   289,
    2853      290,    41,    42,     0,   291,   292,     0,     0,     0,     0,
    2854     1330,     0,   293,     0,     0,     0,     0,     0,     0,     0,
    2855        0,     0,     0,     0,     0,     0,     0,   294,     0,   378,
    2856        0,     0,   170,     0,     0,     0,   296,   380,   298,   299,
    2857      300,   301,     0,     0,   281,   282,  1077,   283,  1063,     0,
    2858     1064,  1421,  1422,  1065,  1066,  1067,  1068,  1069,  1070,  1071,
    2859     1072,     0,     0,     0,  1073,     0,     0,     0,  1074,  1075,
    2860        0,    33,     0,   284,     0,     0,     0,     0,     0,   649,
    2861        0,     0,     0,   286,     0,     0,   287,   288,   289,   290,
    2862       41,    42,     0,   291,   292,     0,     0,     0,     0,     0,
    2863        0,   293,     0,     0,     0,     0,     0,     0,     0,     0,
    2864        0,     0,     0,     0,     0,     0,   294,     0,   378,     0,
    2865        0,   170,     0,     0,     0,   296,   380,   298,   299,   300,
    2866      301,     0,     0,   281,   282,  1077,   283,  1063,     0,  1064,
    2867        0,     0,  1065,  1066,  1067,  1068,  1069,  1070,  1071,  1072,
    2868        0,     0,     0,  1073,     0,     0,     0,  1074,  1075,     0,
    2869       33,     0,   284,     0,     0,     0,     0,     0,   649,     0,
    2870        0,     0,   286,     0,     0,   287,   288,   289,   290,    41,
    2871       42,     0,   291,   292,     0,     0,     0,     0,     0,     0,
    2872      293,   281,   282,     0,   283,     0,     0,     0,     0,     0,
    2873        0,     0,     0,     0,     0,   294,     0,   378,     0,     0,
    2874      170,     0,     0,     0,   296,   380,   298,   299,   300,   301,
    2875      284,     0,     0,     0,  1077,     0,   649,     0,     0,     0,
    2876      286,     0,     0,   287,   288,   289,   290,    41,    42,     0,
    2877      291,   292,     0,     0,     0,     0,     0,     0,   293,   281,
    2878      282,     0,   283,     0,     0,     0,     0,     0,     0,     0,
    2879        0,     0,     0,   294,     0,   785,     0,     0,   281,   282,
    2880        0,   283,   296,   380,   298,   299,   300,   301,   284,     0,
    2881        0,     0,     0,     0,   285,     0,     0,     0,   286,     0,
    2882        0,   287,   288,   289,   290,    41,    42,   284,   291,   292,
    2883        0,     0,     0,   285,     0,     0,   293,   286,     0,     0,
    2884      287,   288,   289,   290,    41,    42,     0,   291,   292,     0,
    2885        0,   294,     0,   378,     0,   293,   281,   282,     0,   283,
    2886      296,   827,   298,   299,   300,   301,     0,     0,     0,     0,
    2887      513,     0,     0,     0,     0,   281,   282,     0,   283,   296,
    2888      380,   298,   299,   300,   301,   284,     0,     0,     0,     0,
    2889        0,   285,     0,     0,     0,   286,     0,     0,   287,   288,
    2890      289,   290,    41,    42,   284,   291,   292,     0,     0,     0,
    2891      285,     0,     0,   293,   286,     0,     0,   287,   288,   289,
    2892      290,    41,    42,     0,   291,   292,     0,     0,   294,     0,
    2893        0,     0,   293,   281,   282,     0,   283,   296,   380,   298,
    2894      299,   300,   301,     0,     0,     0,     0,   518,     0,     0,
    2895        0,     0,     0,     0,     0,     0,   296,   380,   298,   299,
    2896      300,   301,   284,     0,     0,     0,     0,     0,   285,     0,
    2897        0,     0,   286,     0,     0,   287,   288,   289,   290,    41,
    2898       42,     0,   291,   292,     0,     0,     0,     0,     0,     0,
    2899      293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2900        0,     0,     0,     0,     0,   521,     0,     0,     0,     0,
    2901        0,     0,     0,     0,   296,   380,   298,   299,   300,   301,
    2902        2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
    2903       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2904       22,    23,    24,    25,     0,     0,     0,     0,     0,     0,
    2905        0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
    2906        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2907        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2908        0,     0,     0,    34,     0,    35,     0,    36,    37,     0,
    2909      173,   174,    40,     0,     0,     0,     0,     0,     0,    41,
    2910       42,   204,     2,   205,     4,     5,     6,     7,     8,     9,
     2611       0,    44,     0,   210,     0,     0,     0,     0,     0,     0,
     2612      46,    47,     2,   208,     4,     5,     6,     7,     8,     9,
    29112613      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    29122614      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     
    29152617       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    29162618       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2917        0,     0,   206,    39,   474,     2,   205,     4,     5,     6,
     2619       0,     0,    38,    39,     0,     0,     0,     0,     0,     0,
     2620       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2621       0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
     2622       0,     0,     0,     0,     0,     0,     0,     0,  -403,   686,
     2623       0,     0,     0,     0,     0,     0,    46,    47,     2,   208,
     2624       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2625      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2626      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2627       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
     2628       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2629       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2630       0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
     2631       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2632       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
     2633    1370,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2634       0,     0,     0,     0,     0,   686,     0,     0,     0,     0,
     2635       0,     0,    46,    47,     2,   208,     4,     5,     6,     7,
     2636       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2637      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2638      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2639       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2640       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2641       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2642       0,    36,     0,     0,    38,    39,     0,     0,     0,     0,
     2643       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2644       0,     0,     0,     0,    43,     0,  1372,     0,     0,     0,
     2645       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2646       0,   686,     0,     0,     0,     0,     0,     0,    46,    47,
     2647       2,   208,     4,     5,     6,     7,     8,     9,    10,    11,
     2648      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2649      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2650       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
     2651       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2652       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2653       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2654     209,    39,     0,     0,     0,     0,     0,     0,     0,     0,
     2655       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2656      43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2657       0,     0,     0,     0,     0,     0,     0,   272,     0,     0,
     2658       0,     0,     0,     0,    46,    47,     2,   208,     4,     5,
     2659       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2660      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2661       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2662       0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     2663       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2664       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2665       0,    35,     0,    36,     0,     0,    38,    39,     0,     0,
     2666       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2667       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
     2668       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2669       0,     0,     0,   686,     0,     0,     0,     0,     0,     0,
     2670      46,    47,     2,   208,     4,     5,     6,     7,     8,     9,
     2671      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2672      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2673      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
     2674       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2675       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2676       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2677       0,     0,    38,    39,     0,     0,     0,     0,     0,     0,
     2678       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2679       0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
     2680       0,     0,     0,     0,     0,     0,     0,     0,     0,   600,
     2681       0,     0,     0,     0,     0,     0,    46,    47,     2,   208,
     2682       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2683      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2684      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2685       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
     2686       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2687       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2688       0,    34,     0,    35,     0,    36,     0,     0,   209,    39,
     2689       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2690      18,    19,    20,    21,    22,    23,    24,    25,    43,     0,
     2691      26,    27,    28,     0,     0,     0,     0,   284,   285,    31,
     2692     286,     0,     0,     0,     0,   210,     0,     0,     0,     0,
     2693       0,     0,    46,    47,     0,     0,     0,     0,     0,     0,
     2694       0,     0,     0,     0,     0,     0,   287,    34,     0,     0,
     2695       0,     0,   288,     0,    38,    39,   289,     0,     0,   290,
     2696     291,   292,   293,    41,    42,     0,   294,   295,     0,     0,
     2697       0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
     2698       0,     0,     0,     0,     0,     0,     0,     0,     0,   296,
     2699       0,   526,     0,     0,   173,     0,     0,     0,    46,    47,
     2700     298,   299,   300,   301,     8,     9,    10,    11,    12,    13,
     2701      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2702      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2703       0,   284,   285,    31,   286,     0,     0,     0,     0,     0,
     2704       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2705       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2706     287,    34,     0,     0,     0,     0,   648,     0,    38,    39,
     2707     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2708     294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
     2709       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2710       0,     0,     0,   296,   -35,   765,     0,     0,     0,     0,
     2711       0,     0,    46,    47,   298,   299,   300,   301,     8,     9,
     2712      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2713      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2714      28,     0,     0,     0,     0,   284,   285,    31,   286,     0,
     2715       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2716       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2717       0,     0,     0,     0,   287,    34,     0,     0,     0,     0,
     2718     288,     0,    38,    39,   289,     0,     0,   290,   291,   292,
     2719     293,    41,    42,     0,   294,   295,     0,     0,     0,     0,
     2720       0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
     2721       0,     0,     0,     0,     0,     0,     0,   296,     0,   297,
     2722       0,     0,     0,     0,     0,     0,    46,    47,   298,   299,
     2723     300,   301,     8,     9,    10,    11,    12,    13,    14,    15,
     2724      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2725       0,     0,    26,    27,    28,     0,     0,     0,     0,   284,
     2726     285,    31,   286,     0,     0,     0,     0,     0,     0,     0,
     2727       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2728       0,     0,     0,     0,     0,     0,     0,     0,   287,    34,
     2729       0,     0,     0,     0,   288,     0,    38,    39,   289,     0,
     2730       0,   290,   291,   292,   293,    41,    42,     0,   294,   295,
     2731       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
     2732       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2733       0,   296,     0,   159,     0,     0,     0,     0,     0,     0,
     2734      46,    47,   298,   299,   300,   301,     8,     9,    10,    11,
     2735      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2736      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2737       0,     0,     0,   284,   285,    31,   286,     0,     0,     0,
     2738       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2739       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2740       0,     0,   287,    34,     0,     0,     0,     0,   288,     0,
     2741      38,    39,   289,     0,     0,   290,   291,   292,   293,    41,
     2742      42,     0,   294,   295,     0,     0,     0,     0,     0,     0,
     2743      43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2744       0,     0,     0,     0,     0,   296,     0,   600,     0,     0,
     2745       0,     0,     0,     0,    46,    47,   298,   299,   300,   301,
     2746       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2747      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2748      26,    27,    28,     0,     0,     0,     0,   284,   285,    31,
     2749     286,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2750       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2751       0,     0,     0,     0,     0,     0,   287,    34,     0,     0,
     2752       0,     0,   288,     0,    38,    39,   289,     0,     0,   290,
     2753     291,   292,   293,    41,    42,     0,   294,   295,     0,     0,
     2754       0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
     2755       0,     0,     0,     0,     0,     0,     0,     0,     0,   296,
     2756       0,   380,     0,     0,     0,     0,     0,     0,    46,    47,
     2757     298,   299,   300,   301,   476,     2,   208,     4,     5,     6,
    29182758       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    29192759      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    29202760       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2761      31,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2762      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2763      24,    25,  -295,     0,    26,    27,    28,     0,    34,     0,
     2764      35,     0,    36,    31,     0,    38,    39,     0,     0,     0,
     2765       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2766      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2767       0,    34,    26,    27,    28,     0,    37,     0,   337,   338,
     2768      40,    31,  -295,     0,     0,    -3,     0,    41,    42,     0,
     2769       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
     2770       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2771       0,     0,     0,     0,    37,   339,    38,    39,    40,     0,
     2772       0,     0,    46,    47,     0,    41,    42,     0,     0,     0,
     2773       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
     2774       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2775       0,    44,     0,   159,     0,     0,     0,     0,     0,     0,
     2776      46,    47,     8,     9,    10,    11,    12,    13,    14,    15,
     2777      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2778       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2779       0,    31,     8,     9,    10,    11,    12,    13,    14,    15,
     2780      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2781       0,     0,    26,    27,    28,     0,     0,     0,     0,    34,
     2782       0,    31,     0,     0,    37,     0,    38,    39,    40,     0,
     2783       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2784       0,     0,     0,     0,     0,     0,    43,     0,     0,    34,
     2785       0,     0,     0,     0,    37,     0,   209,    39,    40,     0,
     2786       0,    44,     0,    45,     0,    41,    42,     0,     0,     0,
     2787      46,    47,     0,     0,     0,     0,    43,     0,     0,     0,
     2788       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2789       0,    44,     0,   272,     0,     0,     0,     0,     0,     0,
     2790      46,    47,     8,     9,    10,    11,    12,    13,    14,    15,
     2791      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2792       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2793       0,    31,     8,     9,    10,    11,    12,    13,    14,    15,
     2794      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2795       0,     0,    26,    27,    28,     0,     0,     0,     0,    34,
     2796       0,    31,     0,     0,    37,     0,   337,   338,    40,     0,
     2797       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2798       0,     0,     0,     0,     0,     0,    43,     0,     0,    34,
     2799       0,     0,     0,     0,    37,     0,   337,   338,    40,     0,
     2800       0,   642,     0,   339,     0,    41,    42,     0,     0,     0,
     2801      46,    47,     0,     0,     0,     0,    43,     0,     0,     0,
     2802       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2803       0,     0,     0,   339,     0,     0,     0,     0,     0,     0,
     2804      46,    47,     8,     9,    10,    11,    12,    13,    14,    15,
     2805      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2806       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2807       0,    31,     8,     9,    10,    11,    12,    13,    14,    15,
     2808      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2809       0,     0,    26,    27,    28,     0,     0,     0,     0,    34,
     2810       0,    31,   455,     0,   112,     0,    38,    39,     0,     0,
     2811       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2812       0,     0,     0,     0,     0,     0,    43,     0,     0,    34,
     2813       0,     0,     0,     0,     0,     0,    38,    39,     0,     0,
     2814       0,     0,     0,    45,     0,     0,     0,     0,     0,     0,
     2815      46,    47,     0,     0,     0,     0,    43,     0,     0,     0,
     2816       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2817       0,     0,     0,   456,     0,     0,     0,  1108,     0,     0,
     2818      46,    47,     8,     9,    10,    11,    12,    13,    14,    15,
     2819      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2820       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2821       0,    31,   455,     8,     9,    10,    11,    12,    13,    14,
     2822      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2823      25,     0,     0,    26,    27,    28,     0,     0,     0,    34,
     2824       0,     0,    31,   455,     0,     0,    38,    39,     0,     0,
     2825       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2826       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
     2827      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2828       0,     0,     0,   456,     0,     0,     0,  1235,     0,     0,
     2829      46,    47,     0,     0,     0,     0,     0,    43,     0,     0,
     2830       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2831       0,     0,     0,     0,   456,     0,     0,     0,     0,     0,
     2832       0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
     2833      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2834      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2835       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2836      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2837      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2838      34,     0,    31,     0,     0,     0,     0,    38,    39,     0,
     2839       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2840       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2841      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2842       0,     0,   642,     0,   339,     0,     0,     0,     0,     0,
     2843       0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
     2844       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2845       0,     0,     0,     0,   259,     0,     0,     0,     0,     0,
     2846       0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
     2847      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2848      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2849       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2850      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2851      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2852      34,     0,    31,     0,     0,     0,     0,    38,    39,     0,
     2853       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2854       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2855      34,     0,     0,     0,     0,     0,     0,   209,    39,     0,
     2856       0,     0,     0,     0,   159,     0,     0,     0,     0,     0,
     2857       0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
     2858       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2859       0,     0,     0,     0,   272,     0,     0,     0,     0,     0,
     2860       0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
     2861      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2862      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2863       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2864      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2865      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2866      34,     0,    31,     0,     0,     0,     0,    38,    39,     0,
     2867       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2868       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2869      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2870       0,     0,     0,     0,   339,     0,     0,     0,     0,     0,
     2871       0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
     2872       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2873       0,     0,     0,     0,   456,     0,     0,     0,     0,     0,
     2874       0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
     2875      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2876      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2877       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2878      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2879      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2880      34,     0,    31,     0,     0,     0,     0,    38,    39,     0,
     2881       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2882       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2883      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2884       0,     0,     0,     0,   600,     0,     0,     0,     0,     0,
     2885       0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
     2886       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2887       0,     0,     0,     0,    45,     0,     0,     0,     0,     0,
     2888       0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
     2889      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2890      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2891       0,     0,    31,     0,     0,     2,   208,     4,     5,     6,
     2892       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2893      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2894      34,    26,    27,    28,     0,     0,     0,   209,    39,     0,
    29212895      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2896       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2897       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2898      35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
     2899       0,    46,    47,   284,   285,     0,   286,  1062,     0,  1063,
     2900       0,     0,  1064,  1065,  1066,  1067,  1068,  1069,  1070,  1071,
     2901       0,     0,  1550,  1072,     0,     0,     0,  1073,  1074,     0,
     2902      33,  -416,   287,     0,     0,     0,     0,     0,  1075,     0,
     2903       0,     0,   289,     0,     0,   290,   291,   292,   293,    41,
     2904      42,     0,   294,   295,     0,     0,     0,     0,     0,     0,
     2905      43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2906       0,     0,     0,     0,     0,   296,     0,   380,     0,     0,
     2907     173,     0,     0,     0,    46,    47,   298,   299,   300,   301,
     2908       0,     0,     0,     0,  1077,     0,   284,   285,  -130,   286,
     2909    1062,     0,  1063,     0,     0,  1064,  1065,  1066,  1067,  1068,
     2910    1069,  1070,  1071,     0,     0,     0,  1072,     0,     0,     0,
     2911    1073,  1074,     0,    33,     0,   287,     0,     0,     0,     0,
     2912       0,  1075,     0,     0,     0,   289,     0,     0,   290,   291,
     2913     292,   293,    41,    42,     0,   294,   295,     0,     0,     0,
     2914       0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
     2915       0,     0,     0,     0,     0,     0,     0,     0,   296,     0,
     2916     380,     0,     0,   173,     0,     0,     0,    46,    47,   298,
     2917     299,   300,   301,     0,     0,     0,     0,  1077,     0,     0,
     2918       0,  -130,     2,   208,     4,     5,     6,     7,     8,     9,
     2919      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2920      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2921      28,     0,     0,     0,     0,     0,     0,    31,     0,   284,
     2922     285,     0,   286,  1062,     0,  1063,  1420,  1421,  1064,  1065,
     2923    1066,  1067,  1068,  1069,  1070,  1071,     0,     0,  1550,  1072,
     2924       0,     0,     0,  1073,  1074,    34,    33,    35,   287,    36,
     2925       0,     0,    38,    39,  1075,     0,     0,     0,   289,     0,
     2926       0,   290,   291,   292,   293,    41,    42,     0,   294,   295,
     2927       0,     0,     0,     0,  1329,     0,    43,     0,     0,     0,
    29222928       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2923        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2924       35,     0,    36,     0,     0,    38,    39,     2,   205,     4,
     2929       0,   296,     0,   380,     0,     0,   173,     0,     0,     0,
     2930      46,    47,   298,   299,   300,   301,     0,     0,   284,   285,
     2931    1077,   286,  1062,     0,  1063,  1420,  1421,  1064,  1065,  1066,
     2932    1067,  1068,  1069,  1070,  1071,     0,     0,     0,  1072,     0,
     2933       0,     0,  1073,  1074,     0,    33,     0,   287,     0,     0,
     2934       0,     0,     0,  1075,     0,     0,     0,   289,     0,     0,
     2935     290,   291,   292,   293,    41,    42,     0,   294,   295,     0,
     2936       0,     0,     0,     0,     0,    43,     0,     0,     0,     0,
     2937       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2938     296,     0,   380,     0,     0,   173,     0,     0,     0,    46,
     2939      47,   298,   299,   300,   301,     0,     0,   284,   285,  1077,
     2940     286,  1062,     0,  1063,     0,     0,  1064,  1065,  1066,  1067,
     2941    1068,  1069,  1070,  1071,     0,     0,     0,  1072,     0,     0,
     2942       0,  1073,  1074,     0,    33,     0,   287,     0,     0,     0,
     2943       0,     0,  1075,     0,     0,     0,   289,     0,     0,   290,
     2944     291,   292,   293,    41,    42,     0,   294,   295,     0,     0,
     2945       0,     0,     0,     0,    43,   284,   285,     0,   286,     0,
     2946       0,     0,     0,     0,     0,     0,     0,     0,     0,   296,
     2947       0,   380,     0,     0,   173,     0,     0,     0,    46,    47,
     2948     298,   299,   300,   301,   287,     0,     0,     0,  1077,     0,
     2949     648,     0,     0,     0,   289,     0,     0,   290,   291,   292,
     2950     293,    41,    42,     0,   294,   295,     0,     0,     0,     0,
     2951       0,     0,    43,   284,   285,     0,   286,     0,     0,     0,
     2952       0,     0,     0,     0,     0,     0,     0,   296,     0,   784,
     2953       0,     0,   284,   285,     0,   286,    46,    47,   298,   299,
     2954     300,   301,   287,     0,     0,     0,     0,     0,   288,     0,
     2955       0,     0,   289,     0,     0,   290,   291,   292,   293,    41,
     2956      42,   287,   294,   295,     0,     0,     0,   288,     0,     0,
     2957      43,   289,     0,     0,   290,   291,   292,   293,    41,    42,
     2958       0,   294,   295,     0,     0,   296,     0,   380,     0,    43,
     2959     284,   285,     0,   286,   345,    47,   298,   299,   300,   301,
     2960       0,     0,     0,     0,   296,     0,     0,     0,     0,   284,
     2961     285,     0,   286,    46,    47,   298,   299,   300,   301,   287,
     2962       0,     0,     0,     0,     0,   288,     0,     0,     0,   289,
     2963       0,     0,   290,   291,   292,   293,    41,    42,   287,   294,
     2964     295,     0,     0,     0,   288,     0,     0,    43,   289,     0,
     2965       0,   290,   291,   292,   293,    41,    42,     0,   294,   295,
     2966       0,     0,   520,     0,     0,     0,    43,     0,     0,     0,
     2967       0,    46,    47,   298,   299,   300,   301,     0,     0,     0,
     2968       0,   523,     0,     0,     0,     0,     0,     0,     0,     0,
     2969      46,    47,   298,   299,   300,   301,     2,   208,     4,     5,
     2970       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2971      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2972       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2973       0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     2974       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2975       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2976       0,    35,     0,    36,    37,     0,   176,   177,    40,     0,
     2977       0,     0,     0,     0,     0,    41,    42,   207,     2,   208,
     2978       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2979      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2980      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2981       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
     2982       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2983       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2984       0,    34,     0,    35,     0,    36,     0,     0,   209,    39,
     2985     476,     2,   208,     4,     5,     6,     7,     8,     9,    10,
     2986      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2987      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2988       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
     2989       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2990       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2991       0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
     2992       0,    38,    39,     2,   208,     4,     5,     6,     7,     8,
     2993       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2994      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2995      27,    28,     0,     0,     0,     0,     0,     0,    31,     0,
     2996       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2997       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2998       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2999      36,     0,     0,   209,    39
     3000};
     3001
     3002#define yypact_value_is_default(yystate) \
     3003  ((yystate) == (-1355))
     3004
     3005#define yytable_value_is_error(yytable_value) \
     3006  YYID (0)
     3007
     3008static const yytype_int16 yycheck[] =
     3009{
     3010       0,     1,    44,    44,    44,     0,     1,     0,   118,     1,
     3011     542,   241,   221,   697,   187,   187,   187,   187,   187,   206,
     3012     170,   171,   187,   501,   283,   697,   608,   505,   758,    58,
     3013     628,   187,    32,   697,   522,   281,   107,    32,   997,    32,
     3014      50,   610,   717,   350,    44,   655,   779,   900,   900,   458,
     3015      50,   350,     0,   188,    82,   611,   608,    50,   188,     0,
     3016     419,   617,   608,   608,    64,   579,  1420,    67,   610,    44,
     3017      70,    64,    44,  1061,    67,    70,    32,    70,    70,   108,
     3018     439,     0,   111,  1424,    32,   189,   157,    50,   447,   608,
     3019      44,    32,   776,   203,   267,   267,   267,   267,   267,     0,
     3020      39,   457,   267,    44,   776,   115,   296,   107,    95,    50,
     3021       0,   267,   776,    32,   608,   115,    82,    51,   118,   119,
     3022     109,    39,    72,    64,   608,    72,    67,    63,   157,    70,
     3023     110,    32,  1339,   268,    28,    39,   346,   117,   268,  1004,
     3024    1494,  1476,    32,   130,    58,   187,   187,   187,   148,   149,
     3025      72,   117,   115,  1073,  1074,    82,   149,   157,   158,   263,
     3026     264,  1042,   162,    39,   365,    44,    45,   110,   369,   162,
     3027     109,   118,   111,   116,   530,   109,  1511,   258,  1513,  1041,
     3028    1042,  1522,   132,   110,    78,   148,  1527,   187,   188,  1054,
     3029     497,   220,    39,   111,   108,   188,   132,   111,    64,    44,
     3030      45,   211,   411,   203,    82,   109,  1547,   111,   149,  1061,
     3031     132,   211,   187,  1554,   109,   187,    85,    11,   211,   427,
     3032     428,   162,  1142,   223,   743,   267,   267,   267,   491,    96,
     3033     223,   109,   242,   187,   109,  1442,   115,   427,   428,    44,
     3034      45,   241,   242,   109,   113,   274,   187,   188,   211,   743,
     3035      82,   926,   281,   253,   513,   837,   123,    80,   253,   743,
     3036     253,   261,   109,   273,   111,   230,   266,   267,   268,   114,
     3037     211,   342,   407,   273,  1007,   268,    67,   407,   241,   111,
     3038     849,   491,   223,   839,   249,   837,   296,   397,   111,   473,
     3039     113,   837,   837,    84,   117,   503,   296,   253,   308,  1258,
     3040     116,   372,   112,   116,   818,   253,   220,   849,   308,   114,
     3041     273,   610,   253,   114,   522,   425,   132,  1305,   837,   132,
     3042     349,   431,   457,    39,   324,   515,   267,   457,   119,   329,
     3043     520,   690,   116,   523,   253,    82,   329,   366,   419,   949,
     3044    1070,   370,   342,   837,     3,   308,   346,    39,   109,     3,
     3045     350,   351,   253,   837,   489,    90,    91,   258,   439,   489,
     3046     274,  1242,   109,   253,   116,   365,   447,   281,   258,   369,
     3047     131,   162,   372,  1226,  1226,   957,     0,     1,   586,   642,
     3048     643,   644,   515,   346,   517,   575,  1527,   520,   329,   958,
     3049     523,   126,   127,   109,     0,   111,   597,   397,   661,   109,
     3050     107,   642,   643,   644,   433,   957,  1547,   407,    32,   350,
     3051     131,  1292,   957,  1554,   407,   698,   675,   109,   628,   111,
     3052     661,     0,  1020,   633,   131,   425,    32,   427,   428,  1291,
     3053    1292,   431,   223,   696,   434,   349,    96,   720,   639,    72,
     3054    1527,    74,    75,    67,   116,   455,    70,   110,   458,     0,
     3055      83,    84,   366,  1305,   117,   455,   370,   457,   458,   109,
     3056     132,    67,   533,   123,   427,   428,   407,  1554,   131,   116,
     3057     261,    72,   735,  1029,  1030,   266,   499,  1465,   111,   110,
     3058     110,   481,    83,    84,  1472,   132,   696,   117,   966,   489,
     3059     129,   491,   131,   493,   735,   679,   489,   497,   493,   473,
     3060     493,   109,   761,   503,   109,   515,   656,   517,   109,   772,
     3061     520,   757,   109,   523,  1002,   515,   457,   517,   419,   109,
     3062     520,   111,   522,   523,   697,   697,   697,   697,   697,   419,
     3063     530,  1141,   697,   533,   534,  1416,   945,  1525,   439,   116,
     3064     503,   697,   849,  1408,  1409,   493,   447,  1116,   109,   439,
     3065     849,   116,   493,   663,  1416,   132,   497,   447,   110,   522,
     3066     351,   665,   772,   826,   699,   643,   644,   132,   597,   699,
     3067      72,   116,    74,    75,   493,  1305,    82,   109,   578,   579,
     3068     936,    83,    84,   661,    72,   826,   586,   132,   944,   612,
     3069     491,   110,   493,   616,   110,    83,    84,   597,   598,   223,
     3070     629,   110,   602,   493,   110,   115,   116,   109,   608,   690,
     3071     610,   117,   114,  1465,   637,   112,   645,   223,   641,   116,
     3072    1472,   131,   116,   586,   695,    72,   110,   828,   628,   253,
     3073     814,   660,   833,   633,   990,   635,    83,    84,   132,   639,
     3074     824,   432,   642,   643,   644,    80,   116,   253,   112,   112,
     3075     598,   732,  1382,   116,   838,   962,   116,   735,   116,   116,
     3076     110,   661,   132,   663,   111,   628,   116,   608,   109,   610,
     3077     633,   109,   132,  1525,   132,   132,   111,   886,   113,   112,
     3078     109,   110,   117,   116,     4,     5,     6,     7,     8,     9,
     3079      72,   482,  1101,   976,   115,   695,   696,   697,   907,   699,
     3080     771,    83,    84,   116,   116,   679,   109,   717,     4,     5,
     3081       6,     7,     8,     9,   112,   629,     3,   717,   116,   132,
     3082     132,   922,    72,    10,    11,    12,    13,    14,   757,   111,
     3083     109,   645,   111,    83,    84,   735,   736,   737,   968,  1469,
     3084     132,  1471,   892,   743,   744,   351,   660,   118,   826,    69,
     3085      64,    71,    39,   124,   125,   109,   697,    72,   699,    74,
     3086      75,   111,     4,     5,     6,     7,     8,     9,    83,    84,
     3087      72,   771,   772,    69,    76,    71,   776,   777,  1041,   112,
     3088      67,    83,    84,   116,    10,    11,    12,    13,    14,   690,
     3089    1322,    33,    94,    72,   109,   696,  1526,   120,   121,   114,
     3090     690,   936,   743,   744,    83,    84,   936,   109,   109,   944,
     3091    1020,   602,   132,    39,   944,   110,   118,   119,   818,   110,
     3092    1132,   116,    88,    89,  1136,   116,   826,    69,   828,    71,
     3093     830,   732,   111,   833,   834,   286,   109,   837,   111,   630,
     3094     814,    67,   732,   757,   635,   112,  1033,  1531,   871,   849,
     3095     824,  1134,    92,    93,  1038,  1039,   132,   308,   309,  1531,
     3096     110,   109,   112,   111,   838,   114,   116,  1531,   109,   493,
     3097     111,   772,    72,  1132,    74,    75,   482,  1136,  1137,   110,
     3098     114,   131,   132,    83,    84,   116,   834,   493,  1497,     0,
     3099       1,   110,   114,   922,  1503,   346,   837,   116,  1161,   132,
     3100     900,  1102,   109,   110,   111,   900,  1056,   132,   849,  1192,
     3101    1193,   110,  1096,  1097,   114,  1524,   926,   116,    29,    30,
     3102    1529,    32,   922,   110,   110,   109,   926,   111,   110,   116,
     3103     116,   382,   723,    44,   116,   945,   936,   110,   109,    50,
     3104     963,    82,   110,   116,   944,   945,   737,    58,   116,   110,
     3105     109,  1161,   900,    64,   110,   116,    67,   957,   958,    70,
     3106     116,   109,   962,    85,    86,    87,   112,   967,   968,   109,
     3107       3,   111,   967,    84,    85,   967,   110,    10,    11,    12,
     3108      13,    14,   116,   109,   984,   111,   109,   109,   111,   111,
     3109     990,   113,   114,  1252,    82,   936,   110,   108,   110,   900,
     3110     111,   119,   116,   944,   116,   968,    39,   118,   115,   116,
     3111     900,   110,   128,    30,  1124,  1205,  1206,   116,  1208,   129,
     3112    1020,   962,    94,   110,   630,  1215,   131,  1217,  1291,   116,
     3113      94,   702,  1242,   704,    67,   109,   110,   111,   149,   830,
     3114     111,  1041,  1042,   116,   117,   109,   157,   111,   109,   110,
     3115     111,   162,   110,   111,   118,   119,  1240,  1020,    85,    86,
     3116      87,  1061,   109,     3,  1038,  1039,  1061,    84,    85,   109,
     3117      10,    11,    12,    13,    14,   112,   187,   188,   109,   110,
     3118     111,  1340,   109,   112,   111,  1344,   113,   114,  1272,    58,
     3119      59,  1101,   203,    58,    59,    60,  1280,  1281,  1282,    39,
     3120     211,  1101,  1102,  1264,  1265,  1266,   557,   558,   559,   220,
     3121     112,    94,   223,  1061,   110,    94,  1116,   723,   110,   230,
     3122    1403,   110,  1096,  1097,  1124,   110,   109,    67,   111,   110,
     3123     109,   737,   111,   110,   245,   118,   119,  1420,   249,   118,
     3124     119,   109,   253,   254,  1328,   564,   565,   566,   567,   116,
     3125    1506,  1222,   115,   116,   116,   117,   267,   268,   116,   117,
     3126    1061,  1161,   698,   274,    44,    45,   560,   561,   568,   569,
     3127     281,  1061,    10,    11,    12,    13,    14,   112,    72,   111,
     3128      74,    75,    76,   112,   720,   562,   563,  1446,  1378,    83,
     3129      84,   114,   131,  1222,    72,   114,    74,    75,    76,   114,
     3130    1556,    39,   109,  1203,  1204,    83,    84,     1,   112,  1204,
     3131    1493,  1494,  1204,   110,   110,   109,   117,   112,   329,   112,
     3132     112,   112,  1222,    29,   830,   110,  1226,   117,   245,    67,
     3133     117,  1226,  1023,    72,   116,    74,    75,    76,   349,   350,
     3134     110,   112,  1242,   117,    83,    84,  1246,   114,   110,   115,
     3135      72,  1246,    74,    75,  1246,   366,    94,   115,   115,   370,
     3136    1161,    83,    84,   116,   109,   900,  1240,   110,   132,   110,
     3137     381,   109,   116,   111,   110,   811,   900,   117,  1226,   110,
     3138     118,   119,   110,   110,   116,   110,   397,   110,    29,  1399,
     3139     110,  1291,  1292,   110,   900,   110,   407,   110,  1272,   110,
     3140    1300,   110,   110,   110,   116,  1305,  1280,  1281,  1282,   110,
     3141    1305,  1541,   110,   110,   425,   115,   112,   131,   110,   110,
     3142     431,   110,   433,   110,   112,  1226,    72,   112,   779,   110,
     3143      76,   110,   116,   110,   117,   110,  1226,    83,    84,  1339,
     3144     116,  1242,   114,   967,  1339,   116,   457,  1339,    94,   112,
     3145     116,   462,   888,   679,  1328,   116,   110,  1305,  1531,  1531,
     3146    1531,  1531,  1531,   109,   381,   476,  1531,    67,   110,  1398,
     3147     481,   115,   118,   119,   112,  1531,   109,    77,   489,   109,
     3148     109,    72,   493,    74,    75,    76,   497,   109,   109,   500,
     3149       1,   502,    83,    84,   117,   112,  1506,  1532,   132,  1399,
     3150     110,   110,  1532,   115,  1305,   110,   132,   115,   114,   129,
     3151     112,   522,  1203,   110,   112,  1305,  1416,  1023,   109,   119,
     3152     116,  1556,   116,   112,   110,   536,  1556,   110,   539,  1064,
     3153     541,   542,   110,   112,    47,   112,   112,  1061,   110,    50,
     3154     976,   112,  1442,   112,   112,   462,   110,  1442,   132,   115,
     3155    1442,   132,   132,   115,   117,  1061,   110,   132,   132,   112,
     3156     254,   112,   162,   115,  1474,  1465,  1476,   112,   112,   112,
     3157    1465,  1007,  1472,   112,  1474,   112,  1476,  1472,   112,   590,
     3158     110,   110,   109,   500,  1398,   502,   597,   112,   814,  1531,
     3159    1531,  1531,   112,   109,   109,    60,   107,   608,   824,   610,
     3160     110,  1511,   110,  1513,   115,   114,  1506,   112,   132,  1300,
     3161     117,  1511,   838,  1513,   112,   110,   112,  1465,   629,   110,
     3162      96,    96,  1058,   223,  1472,  1525,   109,   109,   132,   115,
     3163    1525,  1531,  1532,   112,   645,   116,   110,   148,   110,  1532,
     3164     651,  1541,   110,   110,    42,   132,   157,   117,   132,   660,
     3165     110,   662,   663,   664,   110,    96,  1556,    96,   110,   132,
     3166     110,   261,   117,  1556,  1465,   110,   266,   110,   132,  1020,
     3167     132,  1472,   112,   115,   112,  1465,   109,  1525,  1541,  1203,
     3168    1204,   281,  1472,   132,   132,   115,   697,   115,   699,   110,
     3169    1531,  1226,   110,   110,    56,   132,   207,  1203,  1134,   110,
     3170     211,   712,  1226,  1077,   570,  1226,  1494,   718,   572,  1384,
     3171    1061,   722,   571,   573,  1566,  1315,  1137,   574,  1344,   730,
     3172    1226,  1472,  1246,  1092,  1525,   455,   455,   944,   704,   722,
     3173     241,   242,   743,   744,   651,  1525,    71,    99,   946,   590,
     3174      75,   892,   991,    78,   657,    80,   757,    50,   964,   747,
     3175    1246,   351,    87,   757,   578,    -1,  1192,  1193,   493,    -1,
     3176     578,    64,   273,    -1,    67,   276,   578,    70,    -1,    -1,
     3177      -1,    -1,    -1,    -1,    -1,    -1,  1300,    -1,    -1,    -1,
     3178      -1,  1305,   476,    -1,    -1,   296,  1321,    -1,    -1,    -1,
     3179      -1,    -1,    -1,    -1,  1300,   712,    -1,   308,    -1,  1305,
     3180      -1,   718,    -1,    -1,    -1,   722,    -1,    -1,    -1,    -1,
     3181      -1,    -1,  1038,  1039,    -1,  1339,    -1,    -1,    72,    -1,
     3182      74,    75,    76,    -1,    -1,    -1,   837,    -1,   522,    83,
     3183      84,   342,   432,   195,    -1,   346,    -1,    -1,   849,    -1,
     3184      94,  1376,   536,    -1,  1379,   539,   149,   541,   542,   449,
     3185      -1,    -1,    -1,    -1,   365,   109,   218,   111,   369,   162,
     3186      -1,   372,    -1,   117,   118,   119,   228,    -1,    -1,    -1,
     3187    1096,  1097,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   214,
     3188      -1,   892,   482,    -1,    -1,   188,    67,    -1,   899,  1424,
     3189      -1,    -1,    -1,    72,  1429,    -1,   590,    76,    -1,    10,
     3190      11,    12,    13,    14,    83,    84,    -1,    -1,   211,    -1,
     3191      -1,   922,    -1,    -1,    -1,    94,   427,   428,  1442,    -1,
     3192     223,    -1,    -1,    -1,  1459,   936,    -1,    -1,    39,    -1,
     3193     109,    -1,   111,   944,   296,    -1,    -1,    -1,   119,   118,
     3194     119,  1465,    -1,    -1,   455,    -1,    -1,   458,  1472,    -1,
     3195      72,   962,    74,    75,    76,    -1,    67,    -1,    -1,  1465,
     3196      -1,    83,    84,    -1,    -1,   476,  1472,  1403,   662,    -1,
     3197     664,   982,    94,    -1,    -1,   892,    -1,    -1,    -1,    -1,
     3198     991,   162,   899,    94,  1420,    -1,    -1,   109,   999,   111,
     3199     501,  1002,   503,  1004,   505,    -1,   118,   119,   109,    -1,
     3200     111,  1525,   602,    -1,   515,    -1,   517,   118,   119,   520,
     3201    1545,   522,   523,    -1,    -1,    -1,  1551,    -1,   353,  1525,
     3202     355,    -1,   533,    -1,    -1,    -1,   329,  1562,    -1,    -1,
     3203     630,  1566,    -1,     0,    -1,   635,   730,    10,    11,    12,
     3204      13,    14,   223,  1054,    -1,    -1,  1272,    -1,    -1,    -1,
     3205      -1,    -1,    -1,    -1,  1280,  1281,  1282,  1493,  1494,    -1,
     3206       0,     1,    -1,    -1,    -1,    32,    39,    -1,    -1,    -1,
     3207      -1,    -1,    -1,    -1,   991,   586,    -1,    -1,    -1,    -1,
     3208     261,  1092,   444,    -1,    -1,   266,   597,    72,    -1,    74,
     3209      75,    76,    32,    -1,    67,    -1,    -1,    -1,    83,    84,
     3210      -1,    -1,  1328,    70,   407,    -1,    -1,    -1,   443,    94,
     3211      50,    -1,    -1,  1124,    -1,    -1,   478,   628,    -1,    -1,
     3212      -1,    94,   633,   723,   109,    -1,   111,    -1,   639,    -1,
     3213      70,    -1,    -1,   118,   119,    -1,   109,   737,   111,    -1,
     3214     191,    -1,    -1,    -1,    -1,   118,   119,   198,    10,    11,
     3215      12,    13,    14,   515,    -1,    -1,    -1,   757,   520,    -1,
     3216      -1,   523,    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,
     3217     351,    -1,    -1,    -1,    -1,  1092,    -1,    39,    72,    -1,
     3218      74,    75,    76,    -1,   695,    -1,    -1,    -1,  1199,    83,
     3219      84,   158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3220      94,    -1,    -1,    -1,    -1,    67,   717,    -1,    -1,   149,
     3221      72,  1222,    74,    75,    76,   109,    -1,   157,   158,   270,
     3222      -1,    83,    84,    -1,   118,   119,    -1,    -1,    -1,    -1,
     3223     830,    -1,    94,    -1,    -1,    -1,   747,    -1,    -1,    -1,
     3224      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   188,   111,
     3225      -1,   432,    -1,  1264,  1265,  1266,   118,   119,    -1,    -1,
     3226     771,    -1,    -1,   203,    -1,   232,   206,   207,    -1,    -1,
     3227      -1,   211,    -1,   324,    -1,    -1,    -1,    -1,    -1,    -1,
     3228      -1,   332,  1199,    -1,   335,    -1,   253,    -1,   982,    -1,
     3229      -1,   258,   232,    -1,    -1,    -1,   236,    -1,   238,    -1,
     3230      -1,   482,    -1,    -1,    -1,   999,    -1,   247,  1002,    -1,
     3231    1004,  1322,    -1,   253,    -1,    -1,   678,   828,   258,    -1,
     3232      -1,    -1,   833,    -1,    -1,   687,    -1,    -1,   268,   691,
     3233      -1,    72,    -1,    74,    75,    76,   276,    -1,    -1,    -1,
     3234      -1,    -1,    83,    84,    -1,    -1,    -1,    72,   399,    74,
     3235      75,    76,   403,    94,    -1,    -1,    -1,    -1,    83,    84,
     3236    1054,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    94,
     3237     111,    -1,     0,    -1,    -1,    -1,    -1,   118,   119,    -1,
     3238      -1,    -1,    -1,    -1,   109,   352,    -1,  1398,  1399,    -1,
     3239      -1,    -1,    -1,   118,   119,    -1,    -1,  1408,  1409,    -1,
     3240      -1,    -1,   342,    -1,    32,    -1,   346,    -1,    -1,    -1,
     3241      -1,   922,   352,    -1,    -1,   926,    -1,    -1,    -1,    -1,
     3242      -1,   602,    -1,  1023,    -1,   365,    -1,    -1,    -1,   369,
     3243      -1,    -1,   372,    -1,   945,    -1,  1447,   488,    -1,    -1,
     3244      -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,   630,
     3245      -1,    -1,   419,    -1,   635,   966,   967,   968,    -1,    -1,
     3246      -1,    -1,    -1,    -1,    -1,    -1,    -1,   434,    -1,    -1,
     3247      -1,    -1,   439,    -1,    -1,    -1,    -1,    -1,    -1,   419,
     3248     447,    97,    98,    99,   100,   101,   102,   103,   104,   105,
     3249     106,    -1,    -1,    -1,   434,  1506,  1507,    -1,    -1,   439,
     3250      -1,    -1,    -1,    -1,    -1,  1516,   473,   447,    -1,  1020,
     3251      -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,
     3252    1531,  1532,    -1,    -1,   491,    -1,   493,   578,   579,    -1,
     3253     158,    -1,    -1,   473,    -1,    -1,   476,    -1,    -1,    -1,
     3254      -1,    -1,   723,    -1,    -1,  1556,    -1,    -1,    -1,    -1,
     3255      -1,   491,    -1,   493,    -1,    -1,   737,    -1,    -1,    -1,
     3256      -1,   501,   924,    -1,    -1,   505,    -1,   534,    -1,    -1,
     3257    1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3258      -1,    10,    11,    12,    13,    14,     0,     1,    -1,    -1,
     3259    1101,  1102,    -1,   533,   534,    -1,    -1,    -1,    -1,    -1,
     3260      -1,    -1,    -1,  1203,    -1,    -1,    -1,    -1,    -1,    -1,
     3261      39,    -1,    -1,    -1,    -1,   666,    -1,    -1,    32,   670,
     3262      -1,    -1,    -1,    -1,    -1,   253,    -1,    -1,  1322,    -1,
     3263     258,   598,    -1,    -1,    -1,    -1,    -1,    -1,    67,   579,
     3264      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,   830,
     3265      -1,    -1,   703,    67,    83,    84,    70,   597,   598,    -1,
     3266      -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
     3267     610,    -1,    -1,    -1,    -1,   642,   643,   644,    -1,    -1,
     3268     109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   628,   118,
     3269     119,    -1,    -1,   633,   661,    -1,    -1,    -1,    -1,   639,
     3270    1300,    -1,   642,   643,   644,    -1,    -1,    -1,    -1,    -1,
     3271    1072,  1222,   679,    -1,  1408,  1409,    -1,    -1,    -1,    -1,
     3272      -1,   661,    -1,   690,   352,    -1,    -1,    -1,    -1,   696,
     3273      -1,    -1,    -1,    -1,    -1,  1246,    -1,    -1,    -1,   679,
     3274      -1,    -1,    -1,    -1,   158,    -1,    -1,    -1,    -1,    -1,
     3275     690,    -1,    -1,  1447,    -1,   695,   696,    -1,    -1,   699,
     3276      -1,    -1,    -1,    -1,    -1,   732,    -1,   818,   735,    -1,
     3277      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3278      -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
     3279      -1,   419,   732,    -1,    -1,   735,    10,    11,    12,    13,
     3280      14,    -1,    -1,    -1,   744,   772,   434,   747,    -1,   223,
     3281      -1,   439,    -1,  1507,    -1,    -1,    -1,    32,    -1,   447,
     3282      -1,    -1,  1516,    -1,    -1,    39,    -1,    -1,  1339,    -1,
     3283      -1,   771,   772,    -1,    -1,    -1,    -1,   777,    -1,   253,
     3284      -1,    -1,  1023,    -1,    -1,   473,    -1,   814,    -1,    -1,
     3285      -1,    -1,    -1,    67,    -1,    70,    -1,   824,    72,   826,
     3286      74,    75,    76,   491,   831,   493,    -1,   834,    -1,    83,
     3287      84,   838,    -1,    -1,   814,    -1,    -1,    -1,    -1,   930,
     3288      94,    -1,    -1,    -1,   824,    -1,   826,    -1,   828,    -1,
     3289      -1,   831,    -1,   833,   834,   109,    -1,   111,   838,    -1,
     3290      -1,    -1,    -1,    -1,   118,   119,   534,    -1,   848,    -1,
     3291      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3292      -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
     3293      -1,  1442,    -1,   900,    -1,    -1,    -1,    -1,    -1,    -1,
     3294      -1,    -1,    -1,   158,    -1,    -1,    -1,    -1,    -1,    -1,
     3295      -1,    -1,  1314,    -1,    -1,    -1,    -1,    32,  1009,    -1,
     3296     900,    -1,    -1,  1474,    -1,  1476,    -1,    -1,    -1,    -1,
     3297     598,    -1,    -1,    -1,    -1,  1026,    -1,    -1,    -1,    -1,
     3298      -1,    -1,   922,    10,    11,    12,    13,    14,    -1,    -1,
     3299      -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,
     3300    1511,    -1,  1513,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3301      -1,    -1,    39,    -1,   642,   643,   644,   984,   958,    -1,
     3302     434,    -1,  1203,    -1,    -1,    -1,   966,   967,    -1,    -1,
     3303    1541,    -1,    -1,   661,    -1,    -1,    -1,    -1,   253,    -1,
     3304      67,    -1,    -1,   258,   984,    72,    -1,    74,    75,    76,
     3305      -1,   679,  1103,    -1,    -1,    -1,    83,    84,    -1,    -1,
     3306      -1,    -1,   690,    -1,    -1,    -1,    -1,    94,   696,    -1,
     3307      -1,  1038,  1039,    -1,  1041,  1042,    -1,    -1,    -1,   493,
     3308    1020,    -1,   109,   158,    -1,    -1,    -1,    -1,    -1,    -1,
     3309      -1,   118,   119,  1033,  1061,    -1,    -1,    -1,  1038,  1039,
     3310      -1,  1041,  1042,    -1,   732,    -1,    -1,   735,    -1,    -1,
     3311      -1,  1473,    -1,  1475,    -1,    -1,    -1,    -1,    -1,  1300,
     3312     534,  1061,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1096,
     3313    1097,    -1,    -1,    -1,    -1,    -1,    -1,   352,    -1,    -1,
     3314      -1,    -1,    -1,    -1,   772,    -1,    -1,    -1,  1510,    -1,
     3315    1512,    -1,    -1,    -1,    -1,    -1,  1096,  1097,    -1,    26,
     3316      27,    28,  1102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3317      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   253,    -1,
     3318      -1,    -1,    -1,   258,   598,    -1,   814,    -1,    -1,    -1,
     3319      -1,    -1,    -1,  1555,  1161,  1557,   824,    -1,   826,    -1,
     3320      -1,    -1,    -1,   831,   419,    -1,   834,    -1,  1570,  1571,
     3321     838,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   434,
     3322      -1,  1161,    -1,    -1,   439,    -1,    -1,    -1,   642,   643,
     3323     644,    -1,   447,   100,    -1,   102,    -1,  1204,    -1,    -1,
     3324      -1,    -1,    -1,    -1,    -1,    -1,    -1,   661,    -1,    -1,
     3325      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   473,  1226,
     3326      -1,    -1,    -1,    -1,  1204,    -1,    -1,    -1,    -1,    -1,
     3327      -1,    -1,   900,  1240,    -1,  1242,   491,   352,   493,    -1,
     3328      -1,    -1,  1222,    -1,    -1,    -1,  1226,    -1,    -1,    -1,
     3329      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3330    1240,    -1,  1242,    -1,    -1,  1272,  1246,    -1,    -1,    -1,
     3331      -1,    -1,    -1,  1280,  1281,  1282,   183,    -1,    -1,   534,
     3332      -1,   735,    -1,    -1,  1291,  1292,   193,   194,    -1,    -1,
     3333      -1,   198,  1272,   200,   201,    -1,    -1,    -1,  1305,    -1,
     3334    1280,  1281,  1282,    -1,   419,    -1,    -1,    -1,    -1,    -1,
     3335      -1,  1291,  1292,    -1,    -1,    -1,   984,    -1,    -1,   434,
     3336      -1,  1328,    -1,    -1,   439,  1305,    -1,    -1,    -1,    -1,
     3337      -1,    -1,   447,    -1,    10,    11,    12,    13,    14,    -1,
     3338      -1,    -1,    -1,   598,    -1,    -1,    -1,    -1,  1328,    -1,
     3339      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   473,  1339,
     3340      -1,    -1,    -1,    39,    -1,    10,    11,    12,    13,    14,
     3341    1038,  1039,   826,  1041,  1042,    -1,   491,    -1,   493,    -1,
     3342     834,    -1,    -1,    -1,    -1,    -1,    -1,   642,   643,   644,
     3343      -1,    67,    -1,  1061,    39,    -1,    72,    -1,    74,    75,
     3344      76,    -1,    -1,    -1,    -1,    -1,   661,    83,    84,  1416,
     3345      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,   534,
     3346      -1,    -1,    67,    -1,   679,    -1,    -1,    72,  1096,  1097,
     3347      -1,    76,    -1,   109,    -1,   690,  1416,    -1,    83,    84,
     3348      -1,   696,   118,   119,    -1,    -1,   900,    -1,    -1,    94,
     3349      -1,    -1,    -1,    -1,    54,    -1,    56,    -1,  1465,    59,
     3350      60,    61,  1442,    63,   109,  1472,    -1,    -1,    -1,    -1,
     3351      -1,    -1,    -1,   118,   119,    -1,    -1,   732,    78,    -1,
     3352     735,    -1,    -1,   598,    -1,  1465,    -1,    -1,    -1,    -1,
     3353      90,    91,  1472,  1161,    10,    11,    12,    13,    14,    -1,
     3354      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3355      -1,    -1,    -1,   967,    -1,    -1,    -1,   772,  1525,    -1,
     3356      -1,    -1,    -1,    39,    -1,    -1,    -1,   642,   643,   644,
     3357     984,    -1,    -1,    -1,    -1,    -1,  1204,    -1,   284,    -1,
     3358     286,   287,    -1,    -1,    -1,  1525,   661,    -1,   294,   295,
     3359      -1,    67,  1532,    -1,    -1,    -1,    72,    -1,  1226,   814,
     3360      76,    -1,   308,   309,   679,    -1,    -1,    83,    84,   824,
     3361      -1,   826,  1240,    -1,  1242,   690,   831,    -1,    94,   834,
     3362      -1,   696,    -1,   838,    -1,    -1,    -1,  1041,  1042,    -1,
     3363      -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
     3364     346,    -1,   118,   119,  1272,    37,    38,  1061,    40,    -1,
     3365      -1,    -1,  1280,  1281,  1282,    -1,    -1,   732,    -1,    -1,
     3366     735,    -1,    -1,  1291,  1292,    -1,    -1,    -1,    -1,    -1,
     3367      -1,    -1,    -1,    -1,    66,    -1,   382,  1305,    -1,    -1,
     3368      72,    -1,    74,    75,    76,   900,    -1,    79,    80,    81,
     3369      82,    83,    84,    -1,    86,    87,    -1,   772,    -1,    -1,
     3370    1328,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3371      -1,    -1,    -1,    -1,    -1,   582,   583,   109,    -1,   111,
     3372      -1,   113,   114,    -1,    -1,    -1,   118,   119,   120,   121,
     3373     122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   814,
     3374      -1,    -1,    -1,    -1,   611,    -1,    -1,   614,   615,   824,
     3375     617,   826,   619,   620,    -1,    -1,   831,   624,   625,   834,
     3376      -1,    -1,    -1,   838,    -1,    -1,    -1,    -1,    -1,   984,
     3377      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3378      -1,    -1,    -1,    -1,    -1,   345,    -1,   347,  1416,  1203,
     3379    1204,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   358,   359,
     3380      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3381      -1,    -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3382      -1,    -1,    -1,  1038,  1039,   900,  1041,  1042,    -1,    -1,
     3383      -1,    -1,  1246,    -1,    -1,    -1,    -1,  1465,    -1,    -1,
     3384      -1,   708,   709,    -1,  1472,    -1,  1061,   714,    -1,    -1,
     3385      -1,   557,   558,   559,   560,   561,   562,   563,   564,   565,
     3386     566,   567,   568,   569,   570,   571,   572,   573,   574,    -1,
     3387      -1,    37,    38,    -1,    40,    -1,    -1,  1291,  1292,    -1,
     3388      -1,  1096,  1097,    -1,    -1,    -1,  1300,    -1,    -1,    -1,
     3389      -1,  1305,    -1,    -1,    -1,    -1,    -1,  1525,    -1,    -1,
     3390      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,   984,
     3391      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3392      86,    87,    -1,    -1,    -1,  1339,    -1,    -1,    94,    -1,
     3393      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3394      -1,    -1,    -1,   109,    -1,   111,  1161,    -1,   114,    -1,
     3395      -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
     3396      -1,    -1,    -1,  1038,  1039,    -1,  1041,  1042,    -1,    -1,
     3397      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3398      -1,    -1,    -1,    -1,    -1,    -1,  1061,    -1,    -1,  1204,
     3399      -1,    -1,   698,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3400      -1,    -1,  1416,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3401      -1,  1226,    -1,    -1,   720,    -1,    -1,    -1,    -1,    -1,
     3402      -1,  1096,  1097,    -1,    -1,  1240,    -1,  1242,  1442,    -1,
     3403      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3404      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3405      28,  1465,    30,    31,    32,    -1,    -1,  1272,  1472,    -1,
     3406      -1,    39,    -1,    -1,    -1,  1280,  1281,  1282,    -1,    -1,
     3407      -1,    -1,    -1,   779,    -1,    -1,  1291,  1292,    -1,    -1,
     3408      -1,    -1,    -1,    -1,    -1,    -1,  1161,    -1,    -1,    67,
     3409    1305,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
     3410      78,    -1,    -1,    37,    38,   811,    40,    -1,    -1,    -1,
     3411      -1,  1525,    -1,  1328,    -1,    -1,    94,    -1,    -1,    -1,
     3412      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1204,
     3413      -1,   109,    66,   111,    -1,    -1,    -1,    -1,    72,    -1,
     3414     118,   119,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3415      84,  1226,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3416      94,    -1,    -1,    -1,   724,  1240,   726,  1242,    -1,    -1,
     3417      -1,    -1,    -1,   733,   734,   109,    -1,   111,   738,    -1,
     3418      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,   123,
     3419     750,    -1,    -1,    -1,    -1,   755,    -1,  1272,    -1,    37,
     3420      38,  1416,    40,    -1,    -1,  1280,  1281,  1282,    -1,    -1,
     3421      -1,    -1,    -1,    -1,    -1,    -1,  1291,  1292,    -1,    -1,
     3422      -1,   781,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,
     3423    1305,  1098,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3424      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3425    1465,    -1,    -1,  1328,    -1,    -1,    94,  1472,    -1,    -1,
     3426      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3427     976,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,    50,
     3428     118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
     3429      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3430      -1,  1007,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3431    1525,    -1,    -1,    -1,  1020,    -1,    -1,    37,    38,    -1,
     3432      40,    -1,   882,   883,   884,   885,    -1,   887,    -1,    -1,
     3433      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3434      -1,  1416,    -1,   903,   115,    -1,    66,    -1,   119,    -1,
     3435      -1,    -1,    72,    -1,  1221,  1061,    76,   917,    -1,    79,
     3436      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3437      -1,    67,    -1,    -1,    94,    -1,    -1,   148,    -1,    -1,
     3438      -1,    77,    -1,    79,    -1,    81,    -1,   158,    -1,   109,
     3439    1465,   162,    88,    -1,    -1,    -1,   956,  1472,   118,   119,
     3440     120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,
     3441      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3442      -1,    -1,    -1,   119,    -1,   121,   122,   123,  1134,    -1,
     3443      -1,    -1,    -1,    -1,    -1,    -1,   996,    -1,    -1,    -1,
     3444     211,    -1,    -1,  1003,    -1,    -1,    -1,    -1,  1008,    -1,
     3445    1525,    -1,   223,  1013,    -1,  1015,    -1,    -1,    -1,  1019,
     3446      -1,  1021,  1022,    -1,    -1,  1025,   162,    -1,    -1,    -1,
     3447     241,   242,    -1,    -1,  1034,    -1,    -1,    -1,    -1,    -1,
     3448      -1,    -1,    -1,    -1,    -1,    -1,  1192,  1193,    -1,    -1,
     3449      -1,    -1,  1052,  1053,    -1,   266,    -1,    -1,    -1,    -1,
     3450      -1,    -1,   273,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3451      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1079,
     3452      -1,    -1,  1082,    -1,    -1,   296,    -1,   223,    -1,   225,
     3453     226,   227,    -1,    -1,    -1,    -1,    -1,   308,    26,    27,
     3454      28,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3455      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3456      28,  1121,    30,    31,    32,   261,    -1,  1127,  1128,    -1,
     3457     266,    39,    -1,    -1,    -1,   346,    -1,    -1,    -1,  1139,
     3458     351,    -1,    -1,    -1,  1144,   281,    -1,  1147,    -1,  1149,
     3459      -1,    -1,  1152,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3460      -1,    -1,    -1,    -1,    72,  1165,    74,    75,    76,    -1,
     3461      78,    -1,   100,    -1,   102,    83,    84,    -1,  1178,    -1,
     3462    1180,  1181,  1182,  1183,    -1,    -1,    94,    -1,    -1,    -1,
     3463      -1,    -1,    -1,   329,    -1,    -1,  1196,    -1,  1198,   127,
     3464      -1,   109,  1202,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3465     118,   119,    -1,    -1,    -1,   351,   427,   428,    -1,    -1,
     3466     356,   357,    -1,   434,    -1,    -1,    -1,    -1,   364,    -1,
     3467      -1,  1231,  1232,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3468      -1,    -1,    -1,    -1,   455,    -1,    -1,   458,    -1,    -1,
     3469      -1,    -1,    -1,    -1,    -1,   183,    -1,  1403,    -1,    -1,
     3470      -1,    -1,    -1,   191,    -1,   193,   194,    -1,    -1,    -1,
     3471     198,   407,   200,   201,  1420,    -1,    -1,    -1,    -1,    -1,
     3472     491,    -1,    -1,  1283,  1284,    -1,    -1,    -1,    -1,   425,
     3473      -1,    -1,   503,  1293,   430,    -1,   432,    -1,    -1,    -1,
     3474      -1,    -1,    -1,    -1,   515,    -1,   517,    -1,    -1,   520,
     3475      -1,   522,   523,   449,    -1,    -1,   452,   453,    -1,    -1,
     3476      -1,    -1,    -1,   534,    -1,    -1,    -1,    -1,    -1,    -1,
     3477      -1,    -1,   468,     7,    -1,    -1,    10,    11,    12,    13,
     3478      14,    -1,   270,    -1,    -1,  1345,   482,  1493,  1494,    -1,
     3479      -1,    -1,    -1,   489,    -1,    -1,    -1,  1357,    -1,  1359,
     3480    1360,  1361,    -1,    37,    38,    39,    40,    -1,    -1,    -1,
     3481      -1,  1371,    -1,    -1,    -1,   586,    45,    -1,    -1,    -1,
     3482    1380,    -1,    -1,    -1,    -1,    -1,    -1,   598,    -1,    -1,
     3483      -1,   602,    66,    67,    -1,    -1,  1396,    -1,    72,    -1,
     3484      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3485      84,    -1,    86,    87,    -1,    -1,    -1,   628,    -1,    -1,
     3486      94,    -1,   633,    -1,    93,    -1,    -1,    -1,    -1,    -1,
     3487      -1,   642,   643,   644,   103,   109,    -1,   111,    -1,    -1,
     3488      -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     3489     661,    -1,  1452,  1453,    -1,    -1,    -1,    -1,    -1,    -1,
     3490      -1,    -1,    -1,    -1,    -1,  1465,   602,    -1,    -1,    -1,
     3491      -1,    -1,  1472,    37,    38,    -1,    40,    -1,    -1,    -1,
     3492      -1,    -1,    -1,    -1,    -1,   696,    -1,    -1,    -1,    -1,
     3493     159,    -1,    -1,    -1,   630,    -1,    -1,    -1,    -1,   635,
     3494      -1,    -1,    66,    -1,   173,  1505,   717,    -1,    72,  1509,
     3495      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3496      84,    -1,    86,    87,   735,    -1,   737,   196,    -1,    -1,
     3497      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1538,    -1,
     3498    1540,   210,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3499     219,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     3500     229,   772,    -1,    -1,    -1,    -1,    -1,    -1,  1568,  1569,
     3501      -1,    -1,    -1,    -1,    -1,    -1,  1576,  1577,    -1,    -1,
     3502      -1,    -1,    -1,    -1,    -1,   254,    -1,   723,    -1,    -1,
     3503     259,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3504      -1,   737,    -1,   272,    -1,    -1,    -1,    -1,    -1,   278,
     3505      -1,   280,    -1,    -1,    -1,   826,    -1,    -1,    -1,   830,
     3506      -1,   757,    -1,   834,    -1,    -1,    -1,    -1,   297,    -1,
     3507      -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3508      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3509      24,    25,    26,    27,   582,   583,    30,    31,    32,    -1,
     3510      -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    -1,    -1,
     3511     339,    -1,    -1,    -1,    -1,   344,    -1,    -1,    -1,    -1,
     3512      -1,    -1,   818,   611,    -1,    -1,   614,   615,    -1,   617,
     3513      -1,   619,   620,    67,   830,    -1,   624,   625,    -1,    -1,
     3514      74,    75,    -1,    -1,   373,    -1,    -1,    -1,   377,   378,
     3515      -1,   380,    -1,   849,    -1,   926,    -1,    -1,   387,   388,
     3516      94,   390,   391,    -1,   393,    -1,   395,    -1,    -1,    -1,
     3517      -1,    -1,    -1,    -1,   945,    -1,    -1,   111,    -1,    -1,
     3518      -1,   115,    -1,   412,   118,   119,    -1,    -1,    -1,    -1,
     3519      -1,   420,    -1,    -1,    -1,    -1,    -1,   968,    -1,    -1,
     3520      -1,    -1,    -1,     7,    -1,    -1,    10,    11,    12,    13,
     3521      14,    -1,    -1,   984,    -1,   703,   445,    -1,    -1,    -1,
     3522     708,   709,    -1,    -1,    -1,    -1,   714,   456,    -1,    -1,
     3523      -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,
     3524     936,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1020,
     3525     479,    -1,    -1,    -1,    -1,    -1,   485,    -1,    -1,    -1,
     3526      -1,   490,    66,    67,    -1,    -1,   962,    -1,    72,    -1,
     3527    1041,  1042,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3528      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3529      94,    -1,    -1,    -1,   990,    -1,    -1,   526,    -1,    -1,
     3530      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3531      -1,   540,    -1,    -1,   118,   119,   120,   121,   122,   123,
     3532      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,    -1,
     3533    1101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1034,    -1,
     3534      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   578,
     3535      -1,    -1,    37,    38,    -1,    40,    -1,    -1,   587,   157,
     3536     158,    -1,    -1,    -1,    -1,   594,    -1,    -1,    -1,    -1,
     3537      -1,   600,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3538     609,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3539    1161,    76,    -1,   191,    79,    80,    81,    82,    83,    84,
     3540     198,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3541      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3542    1116,   650,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
     3543      -1,    -1,  1203,   118,   119,   120,   121,   122,   123,    -1,
     3544      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3545      -1,    -1,    -1,    -1,    -1,    -1,    -1,   686,    -1,    -1,
     3546      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3547      -1,  1242,   270,    -1,    -1,     3,     4,     5,     6,     7,
     3548       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3549      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3550      28,    -1,    30,    31,    32,    33,    -1,  1203,    36,    -1,
     3551      -1,    39,   741,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3552    1291,  1292,   751,   752,    -1,    -1,   324,    -1,    -1,  1300,
     3553      -1,    -1,    -1,    -1,   332,   333,   765,   335,   336,    67,
     3554      -1,    69,    -1,    71,    -1,    -1,    74,    75,   346,    -1,
     3555      78,    -1,   350,   782,    -1,   784,    -1,    -1,    -1,   788,
     3556      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     3557      -1,   369,    -1,    -1,   372,    -1,    -1,    -1,    -1,    -1,
     3558      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3559     118,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3560      -1,   399,    -1,    -1,  1300,   403,    -1,    -1,    -1,    -1,
     3561    1098,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3562      -1,    -1,    -1,    -1,   853,    -1,    -1,    -1,    -1,    -1,
     3563      -1,   860,    -1,    -1,    -1,    -1,   434,    -1,    -1,    -1,
     3564      -1,    -1,    -1,    -1,   873,  1416,   875,    -1,    -1,    -1,
     3565      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   457,
     3566     889,    -1,    -1,    -1,    -1,    -1,    -1,   896,    -1,    -1,
     3567      -1,    -1,    -1,    -1,    -1,    -1,   148,    -1,    -1,   908,
     3568      -1,    -1,   911,    -1,    -1,    -1,   158,    -1,    -1,    -1,
     3569     488,    -1,    -1,   491,    -1,    -1,    -1,    -1,   170,   171,
     3570     929,    -1,    -1,  1474,    -1,  1476,    -1,    -1,    10,    11,
     3571      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3572      22,    23,    24,    25,    26,    27,    28,    -1,    30,    31,
     3573      32,    -1,   530,  1221,    -1,   533,   534,    39,    -1,    -1,
     3574    1511,    -1,  1513,    -1,    -1,    -1,    10,    11,    12,    13,
     3575      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3576      24,    25,    26,    27,    28,    67,    -1,    -1,    -1,   241,
     3577    1541,    -1,    74,    75,    -1,    39,    78,    -1,    -1,    -1,
     3578     578,   579,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1018,
     3579      -1,    -1,    94,   265,    -1,    -1,    -1,    -1,    -1,   597,
     3580     598,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,   111,
     3581     608,    -1,   610,   611,    78,    -1,   118,   119,    -1,   617,
     3582      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   627,
     3583     628,    -1,    -1,    -1,    -1,   633,    -1,    -1,    -1,    -1,
     3584      -1,    -1,    -1,    -1,   642,   643,   644,  1076,    -1,    -1,
     3585      -1,    -1,    -1,  1082,    -1,    -1,    -1,    -1,    -1,    -1,
     3586    1556,    -1,    -1,   661,    -1,    -1,    -1,    -1,   666,   667,
     3587      -1,    -1,   670,   671,    -1,    -1,    -1,    -1,    -1,   677,
     3588      -1,    -1,    -1,  1112,    -1,    -1,    -1,    -1,  1117,    -1,
     3589      -1,    -1,    -1,    -1,    -1,    -1,  1125,   695,   696,   697,
     3590      -1,   699,    -1,    -1,    -1,   703,    -1,    -1,    -1,   381,
     3591      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3592      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1156,    -1,    -1,
     3593      -1,    -1,    -1,    -1,    -1,    -1,    -1,   735,   736,  1168,
     3594      -1,    -1,  1171,    -1,  1173,    -1,    -1,    -1,    -1,    -1,
     3595      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1187,  1188,
     3596      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3597      -1,    -1,    -1,   771,   772,    -1,    -1,    -1,   776,   777,
     3598    1209,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3599      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3600      22,    23,    24,    25,    26,    27,    -1,  1236,    30,    31,
     3601      32,   483,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
     3602     818,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   826,    -1,
     3603      -1,    -1,    -1,    -1,    -1,   833,   834,    -1,    -1,   837,
     3604      -1,   839,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3605     522,   849,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
     3606      -1,    -1,   534,    -1,    -1,    -1,    -1,   539,    -1,    -1,
     3607     542,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3608      -1,   553,   554,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3609      -1,    -1,    -1,    -1,    -1,    -1,   118,   119,    -1,    -1,
     3610      -1,    -1,    -1,    -1,   576,  1334,    -1,  1336,    -1,    -1,
     3611      -1,    -1,    -1,    -1,   586,    -1,    -1,    -1,    -1,    -1,
     3612    1349,   593,  1351,    -1,   922,    -1,   598,    -1,    -1,    -1,
     3613      -1,    -1,   930,    -1,    -1,    -1,    -1,    -1,   936,    -1,
     3614    1369,    -1,    -1,    -1,    -1,    -1,   944,    -1,    -1,    -1,
     3615      -1,    -1,    -1,    -1,    -1,    -1,  1385,  1386,    -1,   957,
     3616     958,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1397,    -1,
     3617      -1,  1400,    -1,    -1,    -1,   647,    -1,    -1,    -1,    -1,
     3618      -1,    -1,    -1,    -1,   656,    -1,   984,    -1,    -1,    -1,
     3619      -1,    -1,   990,  1422,    -1,    -1,    -1,    -1,    -1,    -1,
     3620      -1,    -1,  1431,    -1,    -1,  1434,    -1,  1436,  1437,  1438,
     3621      -1,  1009,  1010,    37,    38,    -1,    40,    -1,    -1,    -1,
     3622      -1,    -1,  1020,    -1,   696,    -1,    -1,    -1,  1026,  1027,
     3623      -1,  1029,  1030,  1031,    -1,    -1,    -1,    -1,    -1,    -1,
     3624      -1,    -1,    66,  1041,  1042,    -1,    -1,    -1,    72,  1478,
     3625      -1,  1480,    76,    -1,  1483,    79,    80,    81,    82,    83,
     3626      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,  1498,
     3627      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3628      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3629      -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     3630     772,    -1,   774,    -1,  1102,  1103,  1104,    -1,   780,    -1,
     3631      -1,    -1,    -1,    -1,    -1,   787,    -1,    -1,  1116,     3,
     3632       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3633      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3634      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
     3635      -1,    -1,    36,    37,    38,    39,    40,    -1,   830,   831,
     3636      -1,    -1,   834,  1161,    -1,    -1,    -1,    -1,    -1,    -1,
     3637      -1,    -1,    -1,    -1,    -1,    -1,   848,    -1,    -1,    -1,
     3638      -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,
     3639      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3640      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3641      94,    -1,    -1,    -1,    -1,    -1,   888,    -1,    -1,    -1,
     3642     892,    -1,    -1,    -1,  1222,   109,    -1,   111,    -1,    -1,
     3643      -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     3644      -1,    -1,    -1,    -1,  1242,    -1,    -1,    -1,   132,    -1,
     3645      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3646      -1,    -1,    -1,    -1,     4,     5,     6,     7,     8,     9,
     3647      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3648      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3649      30,    31,    32,  1291,  1292,    -1,   968,    37,    38,    39,
     3650      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3651      -1,    -1,   984,   985,    -1,    -1,    -1,    -1,    -1,   991,
     3652      -1,    -1,    -1,    -1,    -1,   997,    66,    67,  1000,    69,
     3653    1002,    71,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3654      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3655      -1,  1023,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,
     3656      -1,    -1,  1034,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3657      -1,   111,    -1,    -1,    -1,    -1,   116,    -1,   118,   119,
     3658     120,   121,   122,   123,  1056,    -1,  1058,    -1,    -1,    -1,
     3659      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3660      -1,  1073,  1074,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3661      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1416,    -1,
     3662      -1,    -1,  1094,    -1,    -1,    -1,     0,    -1,    -1,     3,
     3663       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3664      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3665      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
     3666      -1,    -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,
     3667    1142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3668      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1161,
     3669      64,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
     3670      74,    75,    76,    -1,  1176,  1177,    -1,    -1,  1506,    83,
     3671      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3672      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3673      -1,    -1,    -1,  1531,  1532,   109,    -1,   111,    -1,    -1,
     3674      -1,    -1,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,
     3675      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1556,    -1,
     3676       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3677      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3678      23,    24,    25,    26,    27,    -1,  1258,    30,    31,    32,
     3679      33,    -1,    -1,    36,    37,    38,    39,    40,    41,    -1,
     3680      43,    -1,    -1,    46,    47,    48,    49,    50,    51,    52,
     3681      53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,    62,
     3682      -1,    64,    -1,    66,    67,    -1,    69,    -1,    71,    72,
     3683      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3684      83,    84,    -1,    86,    87,    -1,    -1,  1319,    -1,    -1,
     3685    1322,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3686      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3687      -1,   114,    -1,    -1,    -1,   118,   119,   120,   121,   122,
     3688     123,    -1,    -1,    -1,    -1,   128,    -1,    -1,    -1,   132,
     3689       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3690      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3691      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3692      33,    -1,    -1,    36,    37,    38,    39,    40,    -1,    -1,
     3693      -1,    -1,    -1,    -1,    -1,  1407,    -1,    -1,    -1,    -1,
     3694      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3695      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
     3696      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3697      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3698      -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3699      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3700      -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
     3701     123,    -1,    -1,    -1,    -1,    -1,    -1,  1489,     4,     5,
     3702       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3703      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3704      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3705      -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
     3706      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1541,
     3707      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3708      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
     3709      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3710      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3711      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3712      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3713     116,    -1,   118,   119,   120,   121,   122,   123,     4,     5,
     3714       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3715      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3716      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3717      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3718      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3719      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3720      66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3721      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3722      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3723      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3724      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    83,    84,
     3725     116,    -1,   118,   119,   120,   121,   122,   123,     4,     5,
     3726       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3727      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3728      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3729      -1,    37,    38,    39,    40,    -1,    -1,    -1,    10,    11,
     3730      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3731      22,    23,    24,    25,    26,    27,    28,    -1,    -1,    -1,
     3732      66,    67,    -1,    69,    -1,    71,    72,    39,    74,    75,
     3733      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3734      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3735      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3736      -1,    -1,    -1,   109,    -1,   111,    78,    -1,    -1,    -1,
     3737      -1,    -1,   118,   119,   120,   121,   122,   123,     4,     5,
     3738       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3739      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3740      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3741      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3742      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3743      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3744      66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3745      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3746      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3747      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3748      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3749      -1,    -1,   118,   119,   120,   121,   122,   123,     4,     5,
     3750       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3751      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3752      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3753      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3754      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3755      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3756      66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3757      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3758      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3759      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3760      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3761      -1,    -1,   118,   119,   120,   121,   122,   123,     4,     5,
     3762       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3763      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3764      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3765      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3766      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3767      25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3768      66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3769      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3770      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3771      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3772      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3773      -1,    -1,   118,   119,   120,   121,   122,   123,     3,     4,
    29253774       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    29263775      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2927       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2928        0,     0,    31,     0,     8,     9,    10,    11,    12,    13,
    2929       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2930       24,    25,     0,     0,    26,    27,    28,   492,   493,   494,
    2931       34,     0,    35,    31,    36,     0,     0,   206,    39,     0,
    2932        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2933        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2934        0,    34,     0,     0,     0,     0,     0,     0,    38,    39
    2935 };
    2936 
    2937 #define yypact_value_is_default(yystate) \
    2938   ((yystate) == (-1332))
    2939 
    2940 #define yytable_value_is_error(yytable_value) \
    2941   YYID (0)
    2942 
    2943 static const yytype_int16 yycheck[] =
    2944 {
    2945        0,     1,     0,   203,   184,   184,   520,   698,   238,    43,
    2946      115,   184,     1,   698,    43,    43,   543,   185,   629,     0,
    2947      104,   218,   184,   280,   185,   456,   455,   698,   348,    29,
    2948       30,   184,    32,   184,    32,  1062,   184,   902,   167,   168,
    2949      609,   348,     1,    43,   656,    45,   278,    45,  1043,   611,
    2950     1006,    32,  1042,  1043,    32,    55,   497,     0,   759,   611,
    2951       28,    61,   612,    61,    64,   609,    64,    67,   618,    67,
    2952      154,   609,   499,   579,  1340,   718,   503,   999,    67,   609,
    2953      609,    81,    82,   780,   264,   264,   777,    51,   186,    32,
    2954     1421,   264,   777,   609,    82,   200,  1425,   265,   344,  1055,
    2955      529,    39,   264,   902,   265,   105,   777,     0,   108,    39,
    2956       78,   264,   417,   264,   609,   115,   264,     0,    43,    72,
    2957       43,    45,   363,   643,   644,   645,   367,   489,    44,    45,
    2958       83,    84,   437,    64,     0,    43,    82,    39,   227,    32,
    2959      445,    39,   662,    44,    45,   109,   146,    95,   146,    32,
    2960      184,     0,     1,    39,   154,   184,   184,   246,   111,   159,
    2961       63,   159,   260,   261,  1495,   111,    32,    44,    45,  1477,
    2962      109,    64,   613,   111,    85,   495,   617,  1443,   109,   109,
    2963       30,   111,   130,    32,   184,   185,   110,   185,     4,     5,
    2964        6,     7,     8,     9,  1523,   109,    39,   638,   114,  1528,
    2965      200,   642,   113,   255,  1512,    39,  1514,   109,   208,   111,
    2966      208,   294,   409,   114,   744,    64,   736,   217,    67,  1548,
    2967      220,   145,   220,   109,   902,   111,  1555,   227,   744,   132,
    2968      264,    81,    82,    96,    82,   264,   264,   405,   115,    11,
    2969      644,   645,   242,   489,   405,    82,   246,   109,  1243,   744,
    2970      250,   251,   250,    69,   511,    71,   112,   341,   662,   184,
    2971      123,   184,   110,  1062,   264,   265,   109,   265,   111,   250,
    2972      839,   271,   250,     0,     1,   109,   184,   111,   278,  1306,
    2973      117,   643,   644,   645,   208,   928,   370,   455,     0,   851,
    2974      395,   841,   251,   293,   455,   839,   114,   107,  1293,   851,
    2975      662,   839,  1292,  1293,   611,    32,     3,   250,   828,   839,
    2976      839,    82,  1009,   819,   238,   110,   132,   116,   423,   487,
    2977       32,   131,   117,   839,   429,   116,   487,   220,   328,   116,
    2978      328,    43,   736,    45,   293,   697,    82,  1259,   109,   951,
    2979       67,   132,   425,   426,   839,   132,   270,   347,   348,    61,
    2980      425,   426,    64,   116,   600,    67,   597,   250,   699,    55,
    2981       90,    91,  1227,   109,   364,   417,    72,   250,   368,   132,
    2982     1071,   220,   255,   297,   736,  1074,  1075,    83,    84,   379,
    2983      721,   109,   110,   629,   250,   437,   691,  1065,   634,   255,
    2984      959,    96,   242,   445,   109,   395,   126,   127,   960,   640,
    2985      110,   250,    72,   109,     3,   405,   116,   405,    82,   105,
    2986     1021,   773,   108,    83,    84,   959,   131,   116,   123,   676,
    2987      344,   959,  1417,   423,   828,   109,   501,  1417,  1227,   429,
    2988      513,   431,   873,    68,   146,   518,   110,    72,   521,  1466,
    2989       75,  1528,    77,   117,  1143,   520,  1473,   159,   532,    84,
    2990     1528,   697,    72,  1409,  1410,   455,   349,   121,   122,    72,
    2991      460,  1548,   132,    83,    84,   109,   828,   111,  1555,   116,
    2992       83,    84,   184,   185,   474,   119,   110,  1555,   116,   479,
    2993     1030,  1031,   699,   117,   112,   132,     0,   487,   116,   487,
    2994     1004,   491,   575,   491,   132,   495,   208,   131,   498,  1526,
    2995      500,   425,   426,     0,   721,   762,   119,  1306,   220,   938,
    2996      491,   586,   132,    88,    89,   474,   947,   946,   698,   698,
    2997      520,   217,   131,   250,   965,   698,   758,   773,   657,   379,
    2998     1142,   851,   700,    80,   417,   109,   698,   537,   250,   700,
    2999      540,   968,   542,   543,   851,   698,    72,   698,   491,  1227,
    3000      698,   417,   264,   116,   437,  1117,   109,    83,    84,   664,
    3001      110,   520,   445,   992,   111,   109,   113,   117,   666,   132,
    3002      117,   437,   115,   116,   110,   271,   211,   501,   537,   445,
    3003      116,   540,   278,   542,   543,   111,   109,   480,   131,   830,
    3004      590,   116,     3,   834,   109,   812,   520,   597,   491,    10,
    3005       11,    12,    13,    14,   109,  1306,   489,   132,   491,   609,
    3006      460,   611,   696,   116,    53,    72,   328,   598,   116,     4,
    3007        5,     6,     7,     8,     9,   491,    83,    84,    39,   132,
    3008      630,   590,   110,   116,   132,   119,   348,   978,   116,   691,
    3009      124,   125,   491,   112,   964,  1323,   646,   116,   498,   132,
    3010      500,   347,   652,   116,   111,   110,    67,    96,     0,     1,
    3011     1498,   661,   586,   663,   664,   665,  1504,  1466,   364,   132,
    3012       80,  1102,   368,   890,  1473,   129,   600,   131,   116,   116,
    3013     1042,   733,  1383,   924,    69,    72,    71,  1525,   772,   110,
    3014       32,   888,  1530,   405,   132,   132,    83,    84,   698,  1377,
    3015      700,   111,  1380,   113,   663,   629,   665,   117,   112,   109,
    3016      634,   111,   909,   713,   116,   110,   351,   112,   353,   719,
    3017      110,   116,    64,   723,   111,    67,   116,  1526,   110,   110,
    3018      132,   731,    45,   110,   116,   116,   131,   132,   631,   109,
    3019      970,   111,   110,   455,   744,   745,   112,  1425,    61,   119,
    3020      116,    64,  1430,   192,    67,   112,    72,   110,   758,   116,
    3021       76,   978,    72,   116,   491,   894,    76,    83,    84,  1470,
    3022      938,  1472,   731,    83,    84,  1021,   215,   938,   946,   491,
    3023      112,   110,  1460,   495,   116,   946,   225,    10,    11,    12,
    3024       13,    14,  1009,   109,  1135,  1322,    92,    93,   110,   109,
    3025     1162,   111,   652,   119,   116,   110,   441,    72,   691,   119,
    3026      109,   116,   111,   155,   697,   109,    39,   111,    83,    84,
    3027       10,    11,    12,    13,    14,   691,  1527,   109,   109,   111,
    3028      513,   724,   515,   146,  1034,   518,  1133,   119,   521,   839,
    3029     1137,  1532,  1059,   110,    67,   738,   159,  1532,   109,    39,
    3030      733,   851,  1193,  1194,   835,   294,   115,   116,   110,   110,
    3031      110,  1532,  1103,   713,   116,   116,   116,   733,  1546,   719,
    3032      116,   117,   185,   723,  1552,   115,  1133,    67,   220,   109,
    3033     1137,  1138,   109,   110,   111,  1563,   109,   132,   111,  1567,
    3034      773,   703,   110,   705,   894,   208,   119,   609,   116,   611,
    3035       72,   901,   902,   110,    76,   110,   111,   220,   250,   116,
    3036       64,    83,    84,   110,     1,   109,  1162,   111,  1135,   116,
    3037       72,   902,    74,    75,   924,    85,    86,    87,  1057,   109,
    3038     1292,    83,    84,    72,   630,    74,    75,   109,   938,   832,
    3039       58,    59,   110,   902,    83,    84,   946,   119,   116,   109,
    3040      646,   111,   109,   113,   114,   110,   112,   109,    45,   132,
    3041      110,   116,   114,   110,   964,   661,   116,   115,   116,   116,
    3042      109,   114,   109,   680,   111,   114,  1193,  1194,   114,    72,
    3043      969,    74,    75,    76,   984,   109,   698,   111,   700,   114,
    3044       83,    84,   109,   993,   111,   109,  1253,  1243,   109,   110,
    3045      111,  1001,   132,   442,  1004,   109,  1006,   111,    82,   902,
    3046       72,   132,    74,    75,   109,   328,   109,   104,   111,   902,
    3047     1125,    83,    84,   110,   117,   984,   119,    72,   109,    74,
    3048       75,    82,   744,   745,   116,   117,   902,   476,    83,    84,
    3049      112,   109,  1001,   111,   894,  1004,   970,  1006,   109,   110,
    3050      111,   901,   114,   902,   120,  1055,   116,   117,   145,   109,
    3051      110,   111,   758,  1404,   128,  1065,   111,   154,  1068,  1069,
    3052     1070,    58,    59,    60,   513,  1265,  1266,  1267,  1507,   518,
    3053     1421,  1062,   521,    72,  1341,    74,    75,    76,  1345,   129,
    3054      432,    94,   405,  1093,    83,    84,  1055,  1021,    44,    45,
    3055       10,    11,    12,    13,    14,   131,  1065,   111,   815,  1068,
    3056     1069,  1070,   564,   565,   566,   567,   109,   204,   825,   109,
    3057      969,   208,   110,  1206,  1207,  1125,  1209,   839,  1557,    39,
    3058      112,  1024,  1215,   840,    72,  1218,    74,    75,  1222,   851,
    3059      560,   561,   112,   993,   110,    83,    84,   562,   563,   491,
    3060      110,   238,   239,  1494,  1495,   110,    72,    67,    74,    75,
    3061       76,   110,    72,   110,    74,    75,    76,    83,    84,  1062,
    3062      568,   569,   109,    83,    84,   902,   112,   111,   131,  1062,
    3063      112,   114,   109,   270,   114,   116,   273,  1404,   114,   112,
    3064     1447,   533,   110,   109,    45,   111,  1062,   110,   112,   109,
    3065     1200,   111,   117,   119,  1421,   112,   112,   294,   112,   119,
    3066      297,    29,   117,  1062,   117,   116,  1205,   110,   110,   114,
    3067      117,   112,  1222,   110,   132,   115,   938,  1227,     3,   115,
    3068      115,   109,   116,   110,   946,    10,    11,    12,    13,    14,
    3069      679,   110,   969,  1093,   116,   110,  1227,   117,   110,   688,
    3070      110,   110,   964,   692,   341,   116,   598,   344,  1247,   110,
    3071      110,   110,     3,   110,    39,  1265,  1266,  1267,  1227,    10,
    3072       11,    12,    13,    14,   110,   110,   363,  1494,  1495,  1162,
    3073      367,   110,   110,   370,    10,    11,    12,    13,    14,   110,
    3074      110,   110,    67,   110,   110,  1400,  1379,   110,    39,    29,
    3075      115,   643,   644,   645,   131,   112,  1265,  1266,  1267,   110,
    3076      110,  1204,  1542,    39,   110,   110,   114,   116,   112,   112,
    3077      662,   110,  1322,  1323,   110,  1306,    67,   110,   116,   110,
    3078      117,   116,  1039,  1040,  1227,  1062,   116,   116,   425,   426,
    3079      112,    67,   116,   110,  1227,   110,   112,    85,    86,    87,
    3080     1200,  1340,  1532,  1532,   109,  1204,  1205,   208,   109,  1532,
    3081     1243,  1227,   109,  1322,  1323,  1533,   453,   109,   112,   456,
    3082     1532,   109,  1533,   111,   109,   113,   114,  1377,  1227,  1532,
    3083     1380,  1532,   132,   109,  1532,   111,   117,   474,   239,  1557,
    3084     1097,  1098,   115,   119,   736,   110,  1557,   110,  1247,  1399,
    3085     1400,   115,  1507,   110,   129,   115,   114,   112,  1301,  1409,
    3086     1410,   132,   499,  1306,   501,   110,   503,   116,  1377,   270,
    3087      112,  1380,   116,  1306,   112,  1425,   513,   110,   515,   110,
    3088     1430,   518,   110,   520,   521,   112,   471,   112,   112,   110,
    3089     1306,    47,   112,   294,   112,   532,   297,   112,  1448,   115,
    3090     1409,  1410,  1301,   132,  1443,   110,   132,  1306,   115,   132,
    3091     1460,   117,   110,   132,   115,   132,  1425,   112,   112,   112,
    3092      112,  1430,    72,   112,    74,    75,    76,   112,  1205,   112,
    3093      112,   110,   110,    83,    84,  1466,   828,   926,   112,  1448,
    3094      112,  1340,  1473,   835,     0,     1,   109,   109,  1532,   586,
    3095     1227,  1460,   109,  1532,  1532,    60,   110,  1507,  1508,   109,
    3096      597,   111,    55,   600,   110,   114,   132,  1517,   112,   119,
    3097     1247,   112,   117,  1523,   110,   112,    32,   110,  1528,    96,
    3098       96,   109,  1532,  1533,   109,  1533,   115,   110,   112,    45,
    3099      132,   110,   629,    42,   116,  1526,  1546,   634,  1548,  1508,
    3100      110,   110,  1552,   640,   117,  1555,   132,  1557,  1517,  1557,
    3101      902,    67,   105,  1563,  1523,   108,  1273,  1567,   132,  1528,
    3102      110,   110,    96,  1466,  1281,  1282,  1283,    96,   132,  1306,
    3103     1473,   110,   110,  1466,   132,   117,   132,  1546,   110,  1548,
    3104     1473,   112,   110,  1552,  1443,   115,  1555,   132,   104,   112,
    3105     1466,   109,   453,   115,  1563,   456,   132,  1473,  1567,   696,
    3106      115,   154,   110,  1340,    64,   110,   132,  1466,  1542,   110,
    3107      110,  1077,  1329,   571,  1473,   570,  1227,   969,   572,    64,
    3108       64,   718,   573,  1526,  1073,   574,  1495,  1385,  1567,    74,
    3109      146,  1316,  1138,  1526,   986,   680,  1473,    81,   154,   155,
    3110     1345,  1093,   705,   946,     4,     5,     6,     7,     8,     9,
    3111     1526,   748,   513,   453,   515,   471,   116,   518,   723,   453,
    3112      521,   948,   993,   590,   217,   894,   966,  1526,   658,   185,
    3113     1247,   116,   116,    33,   578,   772,   491,   758,    10,    11,
    3114       12,    13,    14,    -1,   200,   578,   748,   203,   204,   578,
    3115     1042,  1043,   208,  1399,    -1,    -1,    -1,    -1,    -1,   159,
    3116       -1,    -1,    -1,    -1,    -1,    -1,  1443,    39,    -1,    69,
    3117     1062,    71,    -1,   229,   159,   159,    -1,   233,   271,   235,
    3118       72,    -1,    74,    75,    76,   278,    -1,    -1,   244,  1466,
    3119       -1,    83,    84,   830,   250,    67,  1473,   834,    -1,   255,
    3120       72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,   265,
    3121       -1,    83,    84,    -1,    -1,    -1,    -1,   273,   283,    -1,
    3122      220,    -1,    -1,    -1,    -1,    -1,    26,    27,    28,    -1,
    3123      815,   296,   297,    -1,    -1,   220,   220,   109,    -1,   111,
    3124      825,    -1,    -1,   308,    -1,    -1,    -1,   119,    -1,  1526,
    3125       -1,    -1,    -1,    -1,   347,   840,    -1,    -1,   258,    -1,
    3126       -1,    -1,   262,    10,    11,    12,    13,    14,    -1,    -1,
    3127     1532,   364,    -1,   258,   258,   368,    -1,   262,   262,   344,
    3128       -1,    -1,    -1,    -1,    -1,   341,    -1,   924,   344,    -1,
    3129       -1,   928,    39,   278,   350,    -1,    -1,    97,    -1,    99,
    3130       -1,    -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,
    3131      947,   367,  1204,  1205,   370,   380,    -1,   718,    -1,    -1,
    3132       67,    -1,    -1,    -1,   680,    72,  1315,    74,    75,    76,
    3133       -1,   968,   969,   970,    -1,  1227,    83,    84,   431,    -1,
    3134       72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,   349,
    3135       -1,    83,    84,    -1,    -1,  1247,    72,    -1,    74,    75,
    3136       76,   417,   109,    -1,   349,   349,    -1,    83,    84,    -1,
    3137       -1,    72,   119,    74,    75,    76,   432,   109,    -1,   111,
    3138      180,   437,    83,    84,  1021,    -1,    -1,   119,    -1,   445,
    3139      190,   191,    -1,   109,    -1,   195,    -1,   197,   198,    -1,
    3140     1292,  1293,    -1,   119,    -1,    -1,    -1,    -1,   109,  1301,
    3141       -1,    -1,    -1,    -1,  1306,   471,    -1,    -1,   474,    -1,
    3142       51,    -1,    53,    -1,    -1,    56,    57,    58,    -1,    60,
    3143      430,    -1,    -1,   489,    -1,   491,    -1,    -1,    -1,    -1,
    3144       -1,    -1,    -1,   499,    75,   430,   430,   503,  1340,    10,
    3145       11,    12,    13,    14,  1039,  1040,    87,    88,    -1,   815,
    3146       -1,    -1,   447,    -1,    -1,  1102,  1103,    -1,    -1,   825,
    3147       72,    -1,    74,    75,    76,    -1,   532,   533,    39,    -1,
    3148      480,    83,    84,    -1,   840,  1474,    -1,  1476,    -1,    -1,
    3149       -1,    -1,   557,   558,   559,   480,   480,    72,    -1,    74,
    3150       75,    76,    -1,    -1,   597,    -1,    67,   109,    83,    84,
    3151       -1,    -1,  1097,  1098,    -1,    -1,    -1,   119,    -1,    -1,
    3152       -1,    -1,  1511,   579,  1513,  1417,    -1,   928,    -1,    -1,
    3153       -1,    -1,    -1,    -1,   109,   600,    -1,   630,    -1,    -1,
    3154       -1,   597,   598,    -1,   600,    -1,   947,    -1,   109,    -1,
    3155      111,  1443,    -1,   646,    -1,   611,    -1,    -1,   119,    -1,
    3156       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1556,   661,  1558,
    3157       -1,    -1,    -1,   629,  1466,    -1,    -1,    -1,   634,    -1,
    3158       -1,  1473,  1571,  1572,   640,  1222,    -1,   643,   644,   645,
     3776      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
     3777      -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,
    31593778      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3160        0,    -1,    -1,   603,    -1,    -1,   662,    -1,    -1,    -1,
    3161     1247,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   603,   603,
    3162       -1,    -1,    -1,    -1,   680,    -1,    -1,    -1,    -1,    -1,
    3163       -1,   631,    32,    -1,  1526,   691,   636,    -1,    -1,    -1,
    3164      696,   697,    -1,    -1,   700,    -1,   631,   631,    -1,    -1,
    3165       -1,   636,   636,    -1,    -1,    -1,  1241,    -1,    -1,    -1,
    3166       -1,    -1,    -1,    -1,    -1,   758,    -1,    67,    -1,   734,
    3167       -1,    -1,    -1,    -1,    -1,    -1,    -1,   733,    -1,    -1,
    3168      736,    -1,    -1,  1039,  1040,    -1,    -1,    -1,  1273,   745,
    3169       -1,    -1,   748,    -1,    -1,    -1,  1281,  1282,  1283,    -1,
    3170       -1,  1102,    -1,  1340,    -1,    -1,    -1,    -1,    -1,    -1,
    3171       -1,    -1,    -1,   344,   345,   780,   772,   773,    -1,    -1,
    3172       -1,    -1,   778,    -1,   724,   356,   357,    -1,    -1,    26,
    3173       27,    28,    -1,    -1,    -1,    -1,    -1,    -1,   738,   724,
    3174      724,  1097,  1098,    -1,  1329,    -1,    -1,    -1,    -1,    -1,
    3175       -1,    -1,    -1,   738,   738,   155,    -1,    -1,    -1,   815,
    3176       -1,    -1,   827,    -1,    -1,    -1,    -1,    -1,    -1,   825,
    3177       -1,    -1,   828,   758,   830,    -1,    -1,   833,   834,   835,
    3178       -1,    -1,   582,   583,   840,    -1,    -1,    -1,    -1,    -1,
    3179       -1,    -1,    -1,    -1,   850,    -1,    -1,    -1,    -1,    -1,
    3180       97,    -1,    99,    -1,    -1,    -1,  1443,    10,    11,    12,
    3181       13,    14,   612,    -1,    -1,   615,   616,    -1,   618,    -1,
    3182      620,   621,    -1,    -1,    -1,   625,   626,   124,    -1,   229,
    3183       -1,   924,   832,    -1,    -1,    -1,    39,    -1,  1475,    -1,
    3184     1477,    -1,    -1,    -1,    -1,    -1,   902,   832,   832,    -1,
    3185      250,    -1,    -1,    -1,    -1,   255,   188,    -1,    -1,    -1,
    3186       -1,    -1,    -1,   195,    67,    -1,    -1,    -1,   924,    72,
    3187       -1,    74,    75,    76,    -1,  1512,    -1,  1514,    -1,    -1,
    3188       83,    84,    -1,   180,    -1,  1241,    -1,    -1,    -1,    -1,
    3189       -1,   188,    -1,   190,   191,    -1,    -1,    -1,   195,    -1,
    3190      197,   198,    -1,    -1,   960,  1542,   109,    -1,   111,   709,
    3191      710,    -1,   968,   969,    -1,   715,   119,  1273,    -1,    10,
    3192       11,    12,    13,    14,    -1,  1281,  1282,  1283,    -1,    -1,
    3193      986,    -1,    -1,    -1,    -1,   267,    -1,    -1,    -1,    10,
    3194       11,    12,    13,    14,    -1,    -1,    -1,    -1,    39,    -1,
    3195      350,    -1,    -1,    -1,    -1,    -1,  1021,    -1,    -1,    -1,
    3196       -1,    -1,    -1,    -1,    -1,  1021,    -1,    -1,    39,    -1,
    3197      267,    -1,    -1,  1329,    -1,    -1,    67,    -1,  1034,    -1,
    3198       -1,    72,    -1,  1039,  1040,    76,  1042,  1043,    -1,    -1,
    3199       -1,   323,    83,    84,    -1,    -1,    67,  1062,    -1,   331,
    3200       -1,    72,   334,    74,    75,    76,  1062,    -1,    -1,    -1,
    3201       -1,    -1,    83,    84,    -1,    -1,    -1,   417,   109,    -1,
    3202       -1,     0,    -1,    -1,  1024,    -1,    -1,    -1,   119,    -1,
    3203       -1,    -1,   432,    -1,    -1,    -1,    -1,   437,   109,  1024,
    3204     1024,  1097,  1098,    -1,    -1,   445,    -1,  1103,   119,    -1,
    3205       -1,    -1,    -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    3206       -1,    -1,    -1,    -1,    -1,   397,    -1,    -1,    -1,   401,
    3207       -1,   471,    -1,    -1,  1475,    -1,  1477,    -1,    97,    98,
    3208       99,   100,   101,   102,   103,   104,   105,   106,    67,   489,
    3209       -1,   491,    -1,    -1,   725,    -1,   727,    -1,    -1,    -1,
    3210       -1,    -1,    -1,   734,   735,    -1,  1162,    -1,   739,    -1,
    3211       -1,  1512,   131,  1514,  1179,    10,    11,    12,    13,    14,
    3212      751,    -1,    -1,    -1,    -1,   756,    -1,    -1,    -1,  1222,
    3213       -1,    -1,    -1,   533,    -1,    -1,    -1,    -1,    -1,    -1,
    3214       -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,  1205,
    3215       -1,   782,    -1,    -1,   486,    -1,    -1,    -1,    -1,    -1,
    3216       -1,    -1,    -1,    -1,    -1,    -1,  1222,    -1,    -1,    -1,
    3217       -1,  1227,    67,    -1,    -1,    -1,   155,    72,    -1,    -1,
    3218       -1,    76,    -1,    -1,    -1,  1241,    -1,  1243,    83,    84,
    3219       -1,  1247,    -1,    -1,    -1,    -1,   827,    -1,   598,    -1,
    3220       -1,    -1,    -1,    -1,  1204,    -1,    -1,    -1,    -1,    -1,
    3221       -1,    -1,    -1,    -1,   109,    -1,    -1,  1273,    -1,  1204,
    3222     1204,    -1,    -1,    -1,   119,  1281,  1282,  1283,    -1,    -1,
    3223       -1,    -1,    -1,    -1,    -1,    -1,  1292,  1293,    -1,    -1,
    3224       -1,    -1,    -1,   643,   644,   645,   578,   579,    -1,    -1,
    3225     1306,    -1,    -1,   884,   885,   886,   887,    -1,   889,    -1,
    3226       -1,    -1,   662,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3227       -1,   250,    -1,  1329,   905,    -1,   255,    -1,    -1,    -1,
    3228      680,    -1,    -1,    -1,  1340,   582,   583,    -1,   919,    -1,
    3229       -1,   691,    -1,    -1,    -1,    -1,    -1,   697,    -1,  1099,
    3230       -1,  1301,    -1,    -1,    -1,    -1,  1399,    -1,    -1,    -1,
    3231       -1,    -1,    -1,    -1,    -1,   612,  1301,  1301,   615,   616,
    3232       -1,   618,    -1,   620,   621,    -1,    -1,   958,   625,   626,
    3233       -1,    -1,    -1,   733,    -1,   667,   736,    -1,    -1,   671,
    3234       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3235       20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
    3236       -1,  1417,    -1,    -1,    -1,    -1,    -1,   998,    -1,    39,
    3237       -1,   350,   704,   773,  1005,    -1,    -1,    -1,    -1,  1010,
    3238       -1,    -1,    -1,    -1,  1015,    -1,  1017,  1443,    -1,    -1,
    3239     1021,  1022,  1023,    -1,    -1,  1026,    -1,    67,    -1,    -1,
    3240       -1,    -1,    -1,    -1,  1035,    -1,    -1,   704,    78,    -1,
    3241     1466,    -1,   709,   710,    -1,   815,    -1,  1473,   715,    -1,
    3242       -1,    -1,  1053,  1054,  1224,   825,    -1,    -1,   828,    -1,
    3243       -1,    -1,    -1,   833,    -1,   835,    -1,    -1,   417,    -1,
    3244      840,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1080,
    3245       -1,    -1,  1083,   432,    -1,    -1,    -1,    -1,   437,    -1,
    3246       -1,    -1,    -1,    -1,    -1,    -1,   445,    -1,    -1,    -1,
    3247     1526,    -1,    -1,    -1,    -1,    -1,    -1,  1533,    -1,    -1,
    3248       -1,    -1,    -1,    -1,    -1,    -1,    -1,   819,    -1,    -1,
    3249       -1,  1122,   471,    -1,    -1,    -1,    -1,  1128,  1129,    -1,
    3250       -1,    -1,   902,    -1,    -1,    -1,    -1,    -1,    -1,  1140,
    3251      489,    -1,   491,     0,  1145,    -1,    -1,  1148,    -1,  1150,
    3252       -1,    -1,  1153,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3253       -1,    -1,    -1,    -1,    -1,  1166,    -1,    -1,    -1,    -1,
    3254       -1,    -1,    -1,    -1,    -1,    32,    37,    38,  1179,    40,
    3255     1181,  1182,  1183,  1184,   533,    -1,    -1,    -1,    -1,    -1,
    3256       -1,    -1,    -1,    -1,    -1,    -1,  1197,    -1,  1199,    -1,
    3257       -1,    -1,  1203,    -1,    -1,    66,    -1,    -1,    -1,    -1,
    3258       67,    72,    -1,    74,    75,    76,   986,    -1,    79,    80,
    3259       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3260      932,  1232,  1233,    94,    -1,    -1,    -1,    -1,    -1,    -1,
    3261       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   598,
    3262      111,    -1,   113,   114,    -1,    -1,    -1,   118,   119,   120,
    3263      121,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,  1039,
    3264     1040,    -1,  1042,  1043,    -1,    -1,    -1,    -1,    -1,    -1,
    3265       -1,    -1,    -1,  1284,  1285,    -1,    -1,    -1,    -1,    -1,
    3266       -1,    -1,  1062,  1294,   643,   644,   645,    -1,   155,    -1,
    3267       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1011,
    3268       -1,    -1,    -1,   662,    -1,    -1,    -1,    -1,    -1,    -1,
    3269       -1,    -1,    -1,    -1,    -1,  1027,    -1,  1097,  1098,    -1,
    3270       -1,   680,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3271       -1,    -1,   691,    -1,    -1,  1346,    -1,    -1,   697,    -1,
    3272       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1358,    -1,  1360,
    3273     1361,  1362,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
    3274       -1,  1372,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3275     1381,    -1,    -1,    -1,   733,    -1,    -1,   736,    -1,    -1,
    3276       -1,    66,  1162,   250,    -1,    -1,  1397,    72,   255,    -1,
    3277       -1,    76,  1104,    -1,    79,    80,    81,    82,    83,    84,
    3278       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,     0,    94,
    3279       -1,    -1,    -1,    -1,   773,    -1,    -1,    -1,    -1,    -1,
    3280       -1,    -1,  1099,    -1,   109,  1205,   111,    -1,    -1,   114,
    3281       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
    3282       32,    -1,  1453,  1454,    -1,    -1,    -1,  1227,    -1,    -1,
    3283       -1,    -1,    -1,    -1,    -1,  1466,   815,    -1,    -1,    -1,
    3284       -1,  1241,  1473,  1243,    -1,    -1,   825,    -1,    -1,   828,
    3285       -1,    -1,    -1,    -1,   833,    67,   835,    -1,    -1,    -1,
    3286       -1,   840,    -1,   350,    -1,    -1,    -1,    -1,    -1,    -1,
    3287       -1,    -1,    -1,  1273,    -1,  1506,    -1,    -1,    -1,  1510,
    3288       -1,  1281,  1282,  1283,    -1,    -1,    -1,    -1,    -1,    -1,
    3289       -1,    -1,  1292,  1293,    -1,    -1,    -1,    -1,    -1,    -1,
    3290       -1,    -1,    -1,    -1,    -1,    -1,  1306,    -1,  1539,    -1,
    3291     1541,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3292       -1,    -1,    -1,   902,    -1,    -1,    -1,  1224,    -1,  1329,
    3293      417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1569,  1570,
    3294       -1,    -1,    -1,   155,    -1,   432,  1577,  1578,    -1,    -1,
    3295      437,    -1,    -1,    -1,    -1,    -1,     0,    -1,   445,     3,
    3296        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3297       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3298       24,    25,    26,    27,   471,    -1,    30,    31,    32,    33,
    3299       -1,    -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,
    3300       -1,    -1,   489,    -1,   491,    -1,    -1,   986,    -1,    -1,
    3301       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1417,    -1,    -1,
    3302       64,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
    3303       74,    75,    76,    -1,    -1,    -1,    -1,    -1,   250,    83,
    3304       84,    -1,    -1,   255,    -1,    -1,   533,    -1,     7,    -1,
    3305       -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
    3306     1039,  1040,    -1,  1042,  1043,   109,  1466,   111,    -1,    -1,
    3307       -1,    -1,    -1,  1473,    -1,   119,    -1,    -1,    37,    38,
    3308       39,    40,    -1,  1062,    -1,    10,    11,    12,    13,    14,
    3309       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3310       25,    26,    27,    28,    -1,    -1,    -1,    66,    67,    -1,
    3311       -1,   598,    -1,    72,    39,    -1,    -1,    76,  1097,  1098,
    3312       79,    80,    81,    82,    83,    84,  1526,    86,    87,    -1,
    3313       -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,   350,    -1,
    3314       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3315      109,    -1,   111,    78,    -1,    -1,   643,   644,   645,   118,
    3316      119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
    3317       -1,    -1,    -1,    -1,    -1,   662,    -1,    -1,    -1,    -1,
    3318       -1,    -1,    -1,  1162,    -1,    -1,    -1,    -1,    -1,    -1,
    3319       -1,    -1,    -1,   680,    -1,    -1,    -1,    -1,    -1,    -1,
    3320       -1,    -1,    -1,    -1,   691,   417,    -1,    -1,    -1,    45,
    3321      697,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3322      432,    -1,    -1,    -1,    -1,   437,  1205,    -1,    64,    -1,
    3323       -1,    -1,    -1,   445,    -1,    -1,    -1,    -1,    -1,    -1,
    3324       -1,    -1,    -1,    -1,    -1,    -1,   733,    -1,  1227,   736,
    3325       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   471,
    3326       -1,    -1,  1241,    -1,  1243,    -1,    -1,    -1,    -1,    -1,
    3327       -1,    -1,    -1,    -1,   110,    -1,    -1,   489,    -1,   491,
    3328      116,    -1,    -1,    -1,    -1,    -1,   773,    -1,    -1,    -1,
    3329       -1,    -1,    -1,    -1,  1273,    -1,    -1,    -1,    -1,    -1,
    3330       -1,    -1,  1281,  1282,  1283,    -1,    -1,    -1,    -1,   145,
    3331       -1,    -1,    -1,  1292,  1293,    -1,    -1,    -1,    -1,   155,
    3332       -1,   533,    -1,   159,    -1,    -1,    -1,  1306,   815,    -1,
    3333       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   825,    -1,
    3334       -1,   828,    -1,    -1,    -1,    -1,   833,    -1,   835,    -1,
    3335     1329,    -1,    -1,   840,    10,    11,    12,    13,    14,    15,
    3336       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3337       26,    27,   208,    -1,    30,    31,    32,    -1,    -1,    -1,
    3338       -1,    -1,    -1,    39,   220,    -1,   598,    -1,    -1,    -1,
     3779      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
     3780      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3781      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
     3782      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    33393783      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3340       -1,    -1,   238,   239,    -1,    -1,    -1,    -1,    -1,    -1,
    3341       -1,    67,    -1,    -1,    -1,   902,    -1,    -1,    74,    75,
    3342       -1,    -1,    -1,    -1,    -1,    -1,   262,    -1,    -1,    -1,
    3343       -1,   643,   644,   645,   270,    -1,    -1,    -1,  1417,    -1,
    3344       -1,    -1,    -1,    -1,   281,    -1,   283,   284,    -1,    -1,
    3345      662,    -1,    -1,    -1,   291,   292,    -1,    -1,   294,   296,
    3346      297,   297,    -1,   119,    -1,    -1,    -1,    -1,   680,    -1,
    3347       -1,   308,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   691,
    3348       -1,    -1,    -1,    -1,    -1,   697,    -1,  1466,    37,    38,
    3349       -1,    40,    -1,    -1,  1473,    -1,    -1,    -1,    -1,   986,
    3350       -1,    -1,    -1,    -1,    -1,    -1,    -1,   344,   344,    -1,
    3351       -1,    -1,    -1,   349,    -1,    -1,    -1,    66,    -1,    -1,
    3352       -1,   733,    -1,    72,   736,    -1,    -1,    76,    -1,    -1,
    3353       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3354       -1,    -1,    -1,   380,    -1,    94,    -1,  1526,    -1,    -1,
    3355       -1,    -1,  1039,  1040,    -1,  1042,  1043,    -1,    -1,    -1,
    3356      109,   773,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
    3357      119,   120,   121,   122,   123,  1062,    -1,    -1,    -1,    -1,
    3358       -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,   425,
    3359      426,    -1,    -1,    -1,    -1,    74,   432,    76,    -1,    78,
    3360       -1,    -1,    -1,   815,    -1,    -1,    85,    -1,    -1,    -1,
    3361     1097,  1098,    -1,   825,    -1,    -1,   828,   453,    -1,    -1,
    3362      456,   833,    -1,   835,    -1,    -1,    -1,    -1,   840,    -1,
    3363       -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,   118,
    3364      119,   120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3365       -1,    -1,    -1,   489,    -1,    -1,    -1,    -1,    -1,    -1,
    3366       -1,    -1,    -1,    -1,    -1,   501,    -1,    -1,    -1,    -1,
    3367       -1,    -1,    -1,    -1,    -1,  1162,    -1,   513,    -1,   515,
    3368      159,    -1,   518,    -1,   520,   521,    -1,    -1,    -1,    -1,
    3369      902,    -1,    -1,    -1,    -1,    -1,    -1,   533,    -1,    -1,
    3370       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3371       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1205,    -1,
    3372      557,   558,   559,   560,   561,   562,   563,   564,   565,   566,
    3373      567,   568,   569,   570,   571,   572,   573,   574,    -1,    -1,
    3374     1227,   220,    -1,   222,   223,   224,    -1,    -1,    -1,    -1,
    3375      586,    -1,    -1,    -1,  1241,    -1,  1243,    -1,    -1,    -1,
    3376       -1,    -1,   598,   600,   600,    -1,    -1,   603,    -1,    -1,
    3377       -1,    -1,    -1,    -1,   986,    -1,    -1,    -1,    -1,   258,
    3378       -1,    -1,    -1,   262,    -1,    -1,  1273,    -1,    -1,    -1,
    3379       -1,    -1,    -1,   629,  1281,  1282,  1283,    -1,   634,   278,
    3380       -1,    -1,    -1,    -1,    -1,  1292,  1293,   643,   644,   645,
    3381       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1306,
    3382       -1,    -1,    -1,    -1,    -1,    -1,   662,  1039,  1040,    -1,
    3383     1042,  1043,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3384       -1,    -1,  1329,    -1,    -1,    -1,    -1,    -1,    -1,   328,
    3385     1062,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3386       -1,   697,   699,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3387      349,    -1,    -1,    -1,    -1,   354,   355,    44,    -1,    -1,
    3388       -1,    -1,   718,   362,   721,  1097,  1098,    -1,    -1,    -1,
    3389       -1,    -1,    -1,    -1,    -1,    -1,    -1,   734,    -1,    -1,
    3390      736,    -1,   738,    10,    11,    12,    13,    14,    15,    16,
    3391       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3392       27,    -1,    -1,    90,    -1,    -1,   405,    -1,    -1,    -1,
    3393     1417,    -1,    39,   100,    -1,    -1,    -1,   773,    -1,    -1,
    3394       -1,    -1,    -1,   780,   423,    -1,    -1,    -1,    -1,   428,
    3395     1162,   430,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3396       67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   447,    -1,
    3397       -1,   450,   451,    -1,    -1,   812,    -1,    -1,    -1,  1466,
    3398       -1,    -1,    -1,    -1,    -1,    -1,  1473,   466,    -1,   156,
    3399      827,    -1,   828,  1205,    -1,    -1,   832,    -1,    -1,   835,
    3400       -1,   480,    -1,   170,    -1,    -1,    -1,    -1,   487,    -1,
    3401       -1,    -1,    -1,    -1,    -1,  1227,    -1,    -1,    -1,    -1,
    3402       -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,    -1,  1241,
    3403       -1,  1243,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1526,
    3404      207,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   216,
    3405       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   226,
    3406       -1,  1273,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1281,
    3407     1282,  1283,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3408     1292,  1293,    -1,    -1,   251,    -1,    -1,    -1,    -1,   256,
    3409       -1,    -1,   928,    -1,  1306,    -1,    -1,    -1,    -1,    -1,
    3410       -1,    -1,   269,    -1,    -1,    -1,    -1,    -1,   275,    -1,
    3411      277,   947,    -1,    -1,    -1,    -1,    -1,  1329,    -1,    -1,
    3412       -1,    -1,    -1,    -1,   603,    -1,    -1,    -1,   295,    -1,
    3413       -1,    -1,    -1,    -1,   970,    -1,    -1,    -1,    -1,    -1,
    3414       -1,   978,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3415      986,    -1,   631,    -1,    -1,    -1,    -1,   636,    -1,    -1,
    3416       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3417       -1,   338,  1009,    -1,    -1,    -1,   343,    -1,    -1,    -1,
    3418       -1,    -1,    -1,    -1,  1021,  1021,    -1,    -1,    -1,    -1,
    3419       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3420       -1,    -1,    -1,    -1,   371,  1417,  1042,  1043,   375,   376,
    3421       -1,   378,    -1,    -1,    -1,    -1,    -1,    -1,   385,   386,
    3422       -1,   388,   389,    -1,   391,  1062,   393,    -1,    -1,    -1,
    3423       -1,    -1,     7,    -1,    -1,    10,    11,    12,    13,    14,
    3424       -1,    -1,    -1,   410,    -1,   724,    -1,    -1,    -1,    -1,
    3425       -1,   418,    -1,    -1,  1466,    -1,    -1,    -1,    -1,   738,
    3426       -1,  1473,    37,    38,    39,    40,  1102,    -1,    -1,    -1,
    3427       -1,    -1,    -1,    -1,    -1,    -1,   443,    -1,    -1,   758,
    3428       -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,    -1,    -1,
    3429       -1,    66,    67,    -1,    -1,    -1,    -1,    72,  1135,    -1,
    3430       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3431      477,    86,    87,    -1,  1526,    -1,   483,    -1,    -1,    94,
    3432       -1,   488,    -1,    -1,    -1,    -1,  1162,    -1,    -1,    -1,
    34333784      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3434      819,    -1,  1179,   118,   119,   120,   121,   122,   123,    -1,
    3435       -1,    -1,    -1,   832,    -1,    -1,  1193,  1194,   525,    -1,
    3436       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1204,    -1,
    3437       -1,    -1,   851,    -1,   541,    -1,    -1,    -1,    -1,    -1,
    3438       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3439       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3440       22,    23,    24,    25,    26,    27,    -1,  1243,    30,    31,
    3441       32,   578,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    3442      587,    -1,    -1,    -1,    -1,    -1,    -1,   594,    -1,    -1,
    3443       -1,    -1,   599,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3444       -1,    -1,    -1,   610,    -1,    67,    -1,    69,    -1,    71,
    3445       72,    -1,    74,    75,    76,    -1,  1292,  1293,    -1,   938,
    3446       -1,    83,    84,    -1,    -1,  1301,    -1,    -1,    -1,    -1,
    3447       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3448       -1,    -1,    -1,    -1,   651,   964,    -1,   109,    -1,   111,
    3449       -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,
    3450       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3451       -1,    -1,    -1,   992,    -1,    -1,    -1,    -1,    -1,    -1,
    3452      687,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3453       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3454       24,    25,    26,    27,    28,  1024,    30,    31,    32,    -1,
    3455       -1,    -1,    -1,    -1,    -1,    39,  1035,    -1,    -1,    -1,
    3456       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1404,    -1,    -1,
    3457       -1,    -1,    -1,    -1,    -1,   742,    -1,    -1,    -1,    -1,
    3458       -1,  1417,    -1,    67,  1421,   752,   753,    -1,    -1,    -1,
    3459       74,    75,    -1,    -1,    78,    -1,    -1,    -1,    -1,   766,
    3460       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3461       -1,    -1,    -1,    -1,    -1,    -1,   783,    -1,   785,    -1,
    3462       -1,    -1,   789,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3463       -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,  1117,  1475,
    3464       -1,  1477,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3465       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1494,  1495,    -1,
    3466       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3467       37,    38,    -1,    40,    -1,    -1,  1512,    -1,  1514,    -1,
    3468       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   855,    -1,
    3469       -1,    -1,    -1,    -1,    -1,   862,    -1,    -1,    -1,    66,
    3470       -1,    -1,    -1,    -1,    -1,    72,  1542,    -1,   875,    76,
    3471      877,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3472       87,    -1,    -1,    -1,   891,  1204,    -1,    94,    -1,    -1,
    3473       -1,   898,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3474       -1,    -1,   109,   910,   111,    -1,   913,    -1,    -1,   116,
    3475       -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
    3476       -1,    -1,    -1,    -1,   931,    -1,    -1,    -1,    -1,    -1,
    3477       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3478       -1,    -1,    -1,    -1,   154,   155,    -1,    -1,    -1,    -1,
    3479       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3480       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3481       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   188,    -1,
    3482       -1,    -1,  1301,    -1,    -1,   195,    -1,     3,     4,     5,
    3483        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3484       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3485       26,    27,    -1,  1020,    30,    31,    32,    33,    -1,    -1,
    3486       36,    -1,    -1,    39,    40,    10,    11,    12,    13,    14,
    3487       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3488       25,    26,    27,    -1,    -1,    30,    31,    32,    64,    -1,
    3489       -1,    67,    -1,    69,    39,    71,    72,   267,    74,    75,
    3490       76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,  1076,
    3491       -1,    -1,    -1,    -1,    -1,    -1,  1083,    -1,    -1,    -1,
    3492       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
    3493       75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,   115,
    3494       -1,    -1,    -1,   119,    -1,   145,  1113,    -1,    -1,    -1,
    3495       -1,  1118,    -1,   323,    -1,   155,    -1,    -1,    -1,  1126,
    3496       -1,   331,   332,    -1,   334,   335,    -1,   167,   168,    -1,
    3497       -1,    -1,    -1,    -1,   344,    -1,    -1,    -1,   348,    -1,
    3498       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3499     1157,    -1,    -1,    -1,    -1,    -1,    -1,   367,    -1,    -1,
    3500      370,    -1,  1169,    -1,    -1,  1172,    -1,  1174,    -1,    -1,
    3501       37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3502       -1,  1188,  1189,    -1,    -1,    -1,    -1,   397,    -1,    -1,
    3503       -1,   401,    -1,    -1,    -1,    -1,    -1,    -1,   238,    66,
    3504       -1,    -1,    -1,  1210,    -1,    72,    -1,    -1,    -1,    76,
    3505       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3506       87,    -1,   432,   263,    -1,    -1,    -1,    94,    -1,    -1,
    3507     1237,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1557,    -1,
    3508       -1,    -1,   109,    -1,   111,   455,    -1,   114,    -1,    -1,
    3509       -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
    3510       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3511       -1,    -1,    -1,    -1,    -1,    -1,   486,    -1,    -1,   489,
    3512       -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
    3513        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3514       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3515       -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,   529,
    3516       39,    -1,   532,   533,    -1,    -1,    -1,    -1,  1335,    -1,
    3517     1337,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   379,
    3518       -1,    -1,    -1,  1350,    -1,  1352,    -1,    -1,    67,    -1,
    3519       69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    78,
    3520       -1,    -1,    -1,  1370,    -1,    -1,    -1,    -1,   578,   579,
    3521       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1386,
    3522     1387,    -1,    -1,    -1,    -1,    -1,    -1,   597,   598,    -1,
    3523      600,  1398,   111,    -1,  1401,    -1,    -1,    -1,    -1,   609,
    3524      119,   611,   612,    -1,    -1,    -1,    -1,    -1,   618,    -1,
    3525       -1,    -1,    -1,    -1,    -1,    -1,  1423,    -1,   628,   629,
    3526       -1,    -1,    -1,    -1,   634,  1432,    -1,    -1,  1435,    -1,
    3527     1437,  1438,  1439,   643,   644,   645,    -1,    -1,    -1,    -1,
    3528       -1,   481,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3529       -1,    -1,   662,    -1,    -1,    -1,    -1,   667,   668,    -1,
    3530       -1,   671,   672,    -1,    -1,    -1,    -1,    -1,   678,    -1,
    3531       -1,    -1,  1479,    -1,  1481,    -1,    -1,  1484,    -1,    -1,
    3532      520,    -1,    -1,    -1,    -1,    -1,   696,   697,   698,    -1,
    3533      700,    -1,  1499,   533,   704,    -1,    -1,    -1,    -1,    -1,
    3534      540,    -1,    -1,   543,    -1,    -1,    -1,    -1,    -1,    -1,
    3535       -1,    -1,    -1,    -1,   554,   555,    -1,    -1,    -1,    -1,
    3536       -1,    -1,    -1,    -1,    -1,    -1,   736,   737,    -1,    -1,
    3537       -1,    -1,    -1,    -1,    -1,    -1,   576,    -1,    -1,    -1,
    3538       -1,    -1,    -1,    -1,    -1,    -1,   586,    -1,    -1,    -1,
    3539       -1,    -1,    -1,   593,    -1,    -1,    -1,    -1,   598,    -1,
    3540       -1,    -1,   772,   773,    -1,    -1,    -1,   777,   778,    -1,
    3541       -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
    3542        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3543       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3544       -1,    30,    31,    32,    33,    -1,    -1,    36,   648,   819,
    3545       39,    40,    -1,    -1,    -1,    -1,    -1,   657,   828,    -1,
    3546       -1,    -1,    -1,    -1,   834,   835,    -1,    -1,    -1,   839,
    3547       -1,   841,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,
    3548       69,   851,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    3549       -1,    -1,    -1,    -1,    83,    84,    -1,   697,    -1,    -1,
    3550       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3551       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3552      109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3553      119,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3554       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3555       25,    26,    27,    28,   924,    30,    31,    32,    -1,    -1,
    3556       -1,    -1,   932,    -1,    39,    -1,    -1,    -1,   938,    -1,
    3557       -1,    -1,    -1,   773,    -1,   775,   946,    -1,    -1,    -1,
    3558       -1,   781,    -1,    -1,    -1,    -1,    -1,    -1,   788,   959,
    3559      960,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3560       75,    76,    -1,    78,    -1,    -1,    -1,    -1,    83,    84,
    3561       -1,    -1,    -1,    -1,    -1,    -1,   986,    -1,    -1,    -1,
    3562       -1,    -1,   992,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3563       -1,    -1,   832,   833,   109,   835,   111,    -1,    -1,    -1,
    3564       -1,  1011,  1012,    -1,   119,    -1,    -1,    -1,    -1,    -1,
    3565      850,  1021,    -1,    -1,    -1,    -1,    -1,  1027,  1028,    -1,
    3566     1030,  1031,  1032,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3567       -1,    -1,  1042,  1043,    -1,    -1,    -1,    -1,    -1,    -1,
    3568       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3569      890,    -1,    -1,    -1,   894,     3,     4,     5,     6,     7,
     3785     115,    -1,    -1,   118,   119,     3,     4,     5,     6,     7,
    35703786       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    35713787      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    35723788      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
    3573       -1,    39,    -1,  1103,  1104,  1105,    -1,    -1,    -1,    -1,
    3574       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1117,    -1,    -1,
    3575       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3576       -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,
    3577      970,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3578       -1,    -1,    -1,    -1,    -1,    -1,   986,   987,    -1,    -1,
    3579       -1,    -1,  1162,   993,    -1,    -1,    -1,    37,    38,   999,
    3580       40,    -1,  1002,   111,  1004,    -1,    -1,    -1,    -1,    -1,
    3581       -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3582       -1,    -1,    -1,    -1,  1024,    -1,    66,    -1,    -1,    -1,
    3583       -1,    -1,    72,    -1,    -1,  1035,    76,    -1,    -1,    79,
    3584       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3585       -1,    -1,  1222,    -1,    94,    37,    38,  1057,    40,  1059,
    3586       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    3587       -1,   111,    -1,  1243,  1074,  1075,    -1,    -1,   118,   119,
    3588      120,   121,   122,   123,    66,    -1,    -1,    -1,    -1,    -1,
    3589       72,    -1,    -1,    -1,    76,  1095,    -1,    79,    80,    81,
    3590       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    3591       -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3592       -1,    -1,  1292,  1293,    -1,    -1,    -1,   109,    -1,   111,
    3593       -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
    3594      122,   123,    -1,  1143,    -1,    -1,    -1,    -1,    -1,    -1,
     3789      -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35953790      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3596       -1,    -1,  1162,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3597       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1177,  1178,    -1,
    3598       -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
    3599        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3600       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3601       -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    37,
    3602       38,    39,    40,    41,    -1,    43,    -1,    -1,    46,    47,
    3603       48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
    3604       -1,    -1,    -1,    61,    62,    -1,    64,  1417,    66,    67,
    3605       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,  1259,
    3606       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3607       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3608       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3609       -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,
    3610      118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
    3611      128,    -1,    -1,    -1,   132,    -1,    -1,    -1,    -1,    -1,
    3612     1320,    -1,  1322,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3613       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1507,    10,    11,
    3614       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3615       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3616       32,    -1,  1532,  1533,    -1,    -1,    -1,    39,    -1,    -1,
    3617       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3618       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1557,    -1,    -1,
    3619       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3620       -1,    -1,    74,    75,    -1,    -1,    -1,    -1,  1408,    -1,
    3621       -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
    3622        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3623       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3624       -1,    -1,    30,    31,    32,    33,    -1,   119,    36,    37,
    3625       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3626       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3627       27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
    3628       -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
    3629     1490,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3630       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3631       67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,    -1,
    3632       -1,   109,    -1,   111,    -1,    -1,    83,    84,    -1,    -1,
    3633      118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
    3634       -1,    -1,  1542,    -1,   132,     3,     4,     5,     6,     7,
    3635        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3636       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3637       -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    37,
    3638       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3639       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3640       27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
    3641       -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
    3642       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3643       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3644       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3645       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3646      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3647        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3648       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3649       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3650       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3651       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3652       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
     3791      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
    36533792      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3654       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3655       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3656       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3657       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,    -1,
    3658      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3659        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3660       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3661       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3662       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3663       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3664       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3665       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3666       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3667       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3668       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3669       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,    -1,
    3670      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3671        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3672       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3673       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3674       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3675       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3676       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3677       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3678       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3679       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3680       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3681       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,    -1,
    3682      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3683        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3684       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3685       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3686       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3687       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3688       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3689       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3690       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3793      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
    36913794      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    36923795      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36933796      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3694      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
     3797     118,   119,     3,     4,     5,     6,     7,     8,     9,    10,
     3798      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3799      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3800      31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
     3801      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3802      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3803      30,    31,    32,    33,    34,    35,    67,    -1,    69,    39,
     3804      71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
     3805      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
     3806      -1,    -1,    -1,    94,    -1,    -1,    -1,    67,    -1,    -1,
     3807      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
     3808     111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,     3,
     3809       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3810      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3811      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
     3812      -1,    -1,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
     3813      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3814      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3815      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3816      74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3817      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3818      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3819      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3820      -1,    -1,    -1,    -1,   118,   119,     4,     5,     6,     7,
    36953821       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    36963822      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3697       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3698       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3823      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3824      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36993825      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
     3826      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    37013827      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3702       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3828      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
    37033829      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    37043830      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37053831      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3706      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3707        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3708       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3709       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3710       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3711       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3712       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3713       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3714       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3715       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3716       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3717       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3718      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3719        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3720       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3721       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3722       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3723       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3724       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3725       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3726       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3727       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3728       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3729       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3730      118,   119,   120,   121,   122,   123,     3,     4,     5,     6,
    3731        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3732       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3733       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3734       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3735       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3736       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3737       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3738        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3739       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3740       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3741       -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
    3742       -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3743       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3744       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
    3745       74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    3746       84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3747       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3748       -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3749       -1,    -1,    -1,    -1,    -1,   119,     4,     5,     6,     7,
    3750        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3751       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3752       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3753       -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3754       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3755       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    67,
    3756       -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,     4,
    3757        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3758       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3759       25,    26,    27,    67,    -1,    30,    31,    32,    72,    -1,
    3760       74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,    83,
    3761       84,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3762       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3763       -1,    -1,    67,    -1,    69,    -1,    71,   111,    -1,    74,
    3764       75,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,
    3765       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3766       -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3767       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3768       -1,    -1,    -1,    -1,   119,     4,     5,     6,     7,     8,
    3769        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3770       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3771       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    3772       39,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3773       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3774       25,    26,    27,    28,    -1,    30,    31,    32,    67,    -1,
    3775       69,    -1,    71,    -1,    39,    74,    75,    -1,    -1,    -1,
    3776       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3777       -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
    3778       -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3779       75,    76,   111,    78,    -1,    -1,    -1,    -1,    83,    84,
    3780      119,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3781       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3782       23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
    3783       -1,    -1,    -1,    -1,   119,    -1,    39,    -1,    -1,    -1,
    3784       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3785       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3786       -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
    3787       -1,    74,    75,    -1,     4,     5,     6,     7,     8,     9,
    3788       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3789       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3790       30,    31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,
    3791       -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,
    3792       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3793       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
    3794       -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,     6,
    3795        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3796       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3797       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3798       -1,   111,    39,    -1,    -1,    -1,    -1,    -1,    -1,   119,
    3799       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3800       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3801       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3802        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3803       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3804       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3805       -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
    3806       -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3807       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3808       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
    3809       74,    75,    10,    11,    12,    13,    14,    15,    16,    17,
    3810       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3811       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3812       38,    39,    40,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    3813       -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,
    3814       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3815       -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
    3816       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3817       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3818       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3819       -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,
    3820      118,   119,   120,   121,   122,   123,    10,    11,    12,    13,
    3821       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3822       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3823       -1,    -1,    -1,    37,    38,    39,    40,    10,    11,    12,
    3824       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3825       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3826       -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,    -1,
    3827       74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3828       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3829       94,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
    3830       -1,    74,    75,    76,    -1,   109,    -1,   111,   112,    -1,
    3831       83,    84,    -1,    -1,   118,   119,   120,   121,   122,   123,
    3832       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3833       20,    21,    22,    23,    24,    25,    26,    27,   111,    -1,
    3834       30,    31,    32,    -1,    -1,    -1,   119,    37,    38,    39,
    3835       40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3836       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3837       -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,
    3838       39,    40,    72,    -1,    74,    75,    76,    -1,    -1,    79,
    3839       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3840       -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    67,    -1,
    3841       -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
    3842      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,
    3843      120,   121,   122,   123,    10,    11,    12,    13,    14,    15,
    3844       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3845       26,    27,   111,    -1,    30,    31,    32,    -1,    -1,    -1,
    3846      119,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
    3847       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3848       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3849       66,    67,    30,    31,    32,    -1,    72,    -1,    74,    75,
    3850       76,    39,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3851       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
    3852       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3853       -1,    -1,    -1,   109,    -1,   111,    74,    75,    -1,    -1,
    3854       -1,    -1,   118,   119,   120,   121,   122,   123,    10,    11,
    3855       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3856       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3857       32,   109,    -1,   111,    -1,    37,    38,    39,    40,    -1,
    3858       -1,   119,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3859       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3860       24,    25,    26,    27,    66,    67,    30,    31,    32,    -1,
    3861       72,    -1,    74,    75,    76,    39,    -1,    79,    80,    81,
    3862       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    3863       -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3864       -1,    -1,    -1,    67,    -1,    -1,    -1,   109,    -1,   111,
    3865       74,    75,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
    3866      122,   123,    10,    11,    12,    13,    14,    15,    16,    17,
    3867       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3868       -1,    -1,    30,    31,    32,   109,    -1,   111,    -1,    37,
    3869       38,    39,    40,    -1,    -1,   119,    -1,    -1,    -1,    -1,
    3870       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3871       20,    21,    22,    23,    24,    25,    26,    27,    66,    67,
    3872       30,    31,    32,    -1,    72,    -1,    74,    75,    76,    39,
    3873       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3874       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3875       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    3876       -1,   109,    -1,   111,    74,    75,    -1,    -1,    -1,    -1,
    3877      118,   119,   120,   121,   122,   123,    10,    11,    12,    13,
    3878       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3879       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3880       -1,   111,    -1,    37,    38,    39,    40,    -1,    -1,   119,
    3881       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3882       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3883       26,    27,    66,    67,    30,    31,    32,    -1,    72,    -1,
    3884       74,    75,    76,    39,    -1,    79,    80,    81,    82,    83,
    3885       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3886       94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3887       -1,    67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,
    3888       -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
    3889        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3890       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3891       23,    24,    25,    26,    27,   111,    -1,    30,    31,    32,
    3892       -1,    -1,    -1,   119,    -1,    -1,    39,    -1,    -1,    -1,
    3893       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3894       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3895       30,    31,    32,    -1,    67,    -1,    69,    -1,    71,    39,
    3896       -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    10,    11,
    3897       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3898       22,    23,    24,    25,    26,    27,    -1,    67,    30,    31,
    3899       32,    -1,    72,    -1,    74,    75,    76,    39,    -1,    -1,
    3900       -1,   114,    -1,    83,    84,    -1,    10,    11,    12,    13,
    3901       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3902       24,    25,    26,    27,    -1,    67,    30,    31,    32,   109,
    3903       72,   111,    74,    75,    76,    39,    -1,    -1,    -1,   119,
    3904       -1,    83,    84,    -1,    10,    11,    12,    13,    14,    15,
    3905       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3906       26,    27,    -1,    67,    30,    31,    32,   109,    72,   111,
    3907       74,    75,    76,    39,    -1,    -1,    -1,   119,    -1,    83,
    3908       84,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3909       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3910       28,    67,    30,    31,    32,   109,    72,   111,    74,    75,
    3911       76,    39,    -1,    -1,    -1,   119,    -1,    83,    84,    -1,
    3912       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3913       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3914       -1,    -1,    -1,   109,    -1,   111,    74,    75,    -1,    -1,
    3915       78,    -1,    -1,   119,    -1,    10,    11,    12,    13,    14,
    3916       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3917       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3918       -1,   109,    -1,   111,    39,    40,    -1,    -1,    -1,    -1,
    3919       -1,   119,    -1,    10,    11,    12,    13,    14,    15,    16,
    3920       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3921       27,    28,    67,    30,    31,    32,    -1,    -1,    -1,    74,
    3922       75,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
    3923       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3924       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3925       67,    -1,    39,    40,    -1,    -1,   111,    74,    75,    -1,
    3926      115,    78,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,
    3927       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3928       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3929       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3930       -1,    -1,   119,    -1,    -1,    10,    11,    12,    13,    14,
    3931       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3932       25,    26,    27,    -1,   111,    30,    31,    32,   115,    -1,
    3933       -1,    -1,   119,    -1,    39,    40,    10,    11,    12,    13,
    3934       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3935       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3936       -1,    -1,    67,    -1,    -1,    39,    -1,    -1,    -1,    74,
    3937       75,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3938       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3939       26,    27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,
    3940       74,    75,    -1,    39,    -1,    -1,   111,    -1,    -1,    -1,
    3941      115,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,
    3942       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3943       -1,    67,    -1,    -1,    -1,    -1,    -1,   111,    74,    75,
    3944       -1,    -1,    -1,    -1,    -1,   119,    -1,    10,    11,    12,
    3945       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3946       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3947       -1,    -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,
    3948       -1,    -1,    -1,   119,    -1,    10,    11,    12,    13,    14,
    3949       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3950       25,    26,    27,    -1,    67,    30,    31,    32,    -1,    -1,
    3951       -1,    74,    75,    -1,    39,    10,    11,    12,    13,    14,
    3952       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3953       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3954       -1,    -1,    67,    -1,    39,    -1,    -1,    -1,   111,    74,
    3955       75,    -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,
    3956       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3957       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
    3958       75,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3959       -1,    -1,    -1,    -1,   119,    -1,    -1,    10,    11,    12,
    3960       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3961       23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
    3962       -1,    -1,    -1,    -1,   119,    -1,    39,    10,    11,    12,
    3963       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3964       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3965       -1,    -1,    -1,    -1,    67,    -1,    39,    -1,    -1,    -1,
    3966       -1,    74,    75,    -1,    -1,    10,    11,    12,    13,    14,
    3967       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3968       25,    26,    27,    -1,    67,    30,    31,    32,    -1,    -1,
    3969       -1,    74,    75,    -1,    39,    -1,    -1,    -1,   111,    -1,
    3970       -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,
    3971       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3972       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,   111,    74,
    3973       75,    -1,    -1,    -1,    -1,    -1,   119,     4,     5,     6,
    3974        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3975       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3976       27,    -1,    -1,    30,    31,    32,   111,    -1,    -1,    -1,
    3977       -1,    -1,    39,    -1,   119,    -1,    -1,    -1,    -1,    -1,
    3978       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3979       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3980       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    37,
    3981       38,    -1,    40,    41,    -1,    43,    -1,    -1,    46,    47,
    3982       48,    49,    50,    51,    52,    53,    -1,    -1,    56,    57,
    3983       -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
    3984       -1,    -1,    -1,   110,    72,    -1,    -1,    -1,    76,    -1,
    3985       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3986       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3987       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3988       -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,
    3989      118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
    3990      128,    -1,    37,    38,   132,    40,    41,    -1,    43,    -1,
    3991       -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3992       -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
    3993       -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
    3994       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3995       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    3996       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3997       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
    3998       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
    3999       -1,    -1,    -1,   128,    -1,    -1,    -1,   132,     4,     5,
    4000        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    4001       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4002       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4003       -1,    -1,    -1,    39,    -1,    37,    38,    -1,    40,    41,
    4004       -1,    43,    44,    45,    46,    47,    48,    49,    50,    51,
    4005       52,    53,    -1,    -1,    56,    57,    -1,    -1,    -1,    61,
    4006       62,    67,    64,    69,    66,    71,    -1,    -1,    74,    75,
    4007       72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
    4008       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    4009       96,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4010       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    4011       -1,    -1,   114,    -1,    -1,    -1,   118,   119,   120,   121,
    4012      122,   123,    -1,    -1,    37,    38,   128,    40,    41,    -1,
    4013       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
    4014       53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,    62,
    4015       -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    -1,    72,
    4016       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    4017       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    4018       -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4019       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
    4020       -1,   114,    -1,    -1,    -1,   118,   119,   120,   121,   122,
    4021      123,    -1,    -1,    37,    38,   128,    40,    41,    -1,    43,
    4022       -1,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
    4023       -1,    -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,
    4024       64,    -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
    4025       -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
    4026       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    4027       94,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
    4028       -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    4029      114,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
    4030       66,    -1,    -1,    -1,   128,    -1,    72,    -1,    -1,    -1,
    4031       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    4032       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    37,
    4033       38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4034       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    37,    38,
    4035       -1,    40,   118,   119,   120,   121,   122,   123,    66,    -1,
    4036       -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    4037       -1,    79,    80,    81,    82,    83,    84,    66,    86,    87,
    4038       -1,    -1,    -1,    72,    -1,    -1,    94,    76,    -1,    -1,
    4039       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    4040       -1,   109,    -1,   111,    -1,    94,    37,    38,    -1,    40,
    4041      118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
    4042      109,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,   118,
    4043      119,   120,   121,   122,   123,    66,    -1,    -1,    -1,    -1,
    4044       -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
    4045       81,    82,    83,    84,    66,    86,    87,    -1,    -1,    -1,
    4046       72,    -1,    -1,    94,    76,    -1,    -1,    79,    80,    81,
    4047       82,    83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,
    4048       -1,    -1,    94,    37,    38,    -1,    40,   118,   119,   120,
    4049      121,   122,   123,    -1,    -1,    -1,    -1,   109,    -1,    -1,
    4050       -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
    4051      122,   123,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
    4052       -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
    4053       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    4054       94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4055       -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,
    4056       -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
    4057        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    4058       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    4059       24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,
    4060       -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
    4061       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4062       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4063       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
    4064       74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    4065       84,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3832     118,   119,     4,     5,     6,     7,     8,     9,    10,    11,
    40663833      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    40673834      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     
    40703837      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40713838      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    4072       -1,    -1,    74,    75,     3,     4,     5,     6,     7,     8,
     3839      -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
     3840      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3841      -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3842      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
     3843      -1,    -1,    -1,    -1,    -1,    -1,   118,   119,     4,     5,
     3844       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3845      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3846      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3847      -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3848      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3849      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3850      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
     3851      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3852      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3853      96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3854      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3855      -1,    -1,   118,   119,     4,     5,     6,     7,     8,     9,
     3856      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3857      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3858      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3859      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3860      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3861      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3862      -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
     3863      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3864      -1,    -1,    -1,    -1,    94,    -1,    96,    -1,    -1,    -1,
     3865      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3866      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,
     3867       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3868      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3869      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3870      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
     3871      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3872      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3873      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3874      74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3875      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3876      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3877      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3878      -1,    -1,    -1,    -1,   118,   119,     4,     5,     6,     7,
     3879       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3880      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3881      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3882      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3883      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3884      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3885      -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,
     3886      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3887      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     3888      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3889      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3890     118,   119,     4,     5,     6,     7,     8,     9,    10,    11,
     3891      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3892      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3893      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
     3894      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3895      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3896      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3897      -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
     3898      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3899      -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3900      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3901      -1,    -1,    -1,    -1,    -1,    -1,   118,   119,     4,     5,
     3902       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3903      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3904      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3905      -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3906      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3907      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3908      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
     3909      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3910      20,    21,    22,    23,    24,    25,    26,    27,    94,    -1,
     3911      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
     3912      40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3913      -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,
     3914      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,
     3915      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3916      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3917      -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,
     3918      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3919      -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,
     3920     120,   121,   122,   123,    10,    11,    12,    13,    14,    15,
     3921      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3922      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3923      -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
     3924      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3925      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3926      66,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3927      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3928      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3929      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3930      -1,    -1,    -1,   109,   110,   111,    -1,    -1,    -1,    -1,
     3931      -1,    -1,   118,   119,   120,   121,   122,   123,    10,    11,
     3932      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3933      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3934      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
     3935      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3936      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3937      -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,    -1,
     3938      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3939      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     3940      -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3941      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3942      -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
     3943     122,   123,    10,    11,    12,    13,    14,    15,    16,    17,
     3944      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3945      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
     3946      38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3947      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3948      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
     3949      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
     3950      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3951      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     3952      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3953      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3954     118,   119,   120,   121,   122,   123,    10,    11,    12,    13,
     3955      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3956      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3957      -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,
     3958      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3959      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3960      -1,    -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,
     3961      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3962      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3963      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3964      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3965      -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     3966      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3967      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3968      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
     3969      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3970      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3971      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,
     3972      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3973      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3974      -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,
     3975      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3976      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,
     3977     120,   121,   122,   123,     3,     4,     5,     6,     7,     8,
    40733978       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    40743979      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    40753980      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    4076       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3981      39,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3982      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3983      26,    27,    28,    -1,    30,    31,    32,    -1,    67,    -1,
     3984      69,    -1,    71,    39,    -1,    74,    75,    -1,    -1,    -1,
     3985      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3986      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3987      -1,    67,    30,    31,    32,    -1,    72,    -1,    74,    75,
     3988      76,    39,    78,    -1,    -1,   114,    -1,    83,    84,    -1,
     3989      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3990      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3991      -1,    -1,    -1,    -1,    72,   111,    74,    75,    76,    -1,
     3992      -1,    -1,   118,   119,    -1,    83,    84,    -1,    -1,    -1,
     3993      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    40773994      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4078       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    4079       69,    -1,    71,    -1,    -1,    74,    75,     4,     5,     6,
    4080        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3995      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3996     118,   119,    10,    11,    12,    13,    14,    15,    16,    17,
     3997      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3998      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3999      -1,    39,    10,    11,    12,    13,    14,    15,    16,    17,
     4000      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     4001      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,
     4002      -1,    39,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
     4003      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
     4004      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    67,
     4005      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
     4006      -1,   109,    -1,   111,    -1,    83,    84,    -1,    -1,    -1,
     4007     118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     4008      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4009      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     4010     118,   119,    10,    11,    12,    13,    14,    15,    16,    17,
     4011      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     4012      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     4013      -1,    39,    10,    11,    12,    13,    14,    15,    16,    17,
     4014      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     4015      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,
     4016      -1,    39,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
     4017      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
     4018      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    67,
     4019      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
     4020      -1,   109,    -1,   111,    -1,    83,    84,    -1,    -1,    -1,
     4021     118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     4022      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4023      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     4024     118,   119,    10,    11,    12,    13,    14,    15,    16,    17,
     4025      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     4026      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     4027      -1,    39,    10,    11,    12,    13,    14,    15,    16,    17,
     4028      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     4029      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,
     4030      -1,    39,    40,    -1,    72,    -1,    74,    75,    -1,    -1,
     4031      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
     4032      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    67,
     4033      -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
     4034      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     4035     118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     4036      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4037      -1,    -1,    -1,   111,    -1,    -1,    -1,   115,    -1,    -1,
     4038     118,   119,    10,    11,    12,    13,    14,    15,    16,    17,
     4039      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     4040      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     4041      -1,    39,    40,    10,    11,    12,    13,    14,    15,    16,
     4042      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4043      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    67,
     4044      -1,    -1,    39,    40,    -1,    -1,    74,    75,    -1,    -1,
     4045      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4046      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     4047      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4048      -1,    -1,    -1,   111,    -1,    -1,    -1,   115,    -1,    -1,
     4049     118,   119,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4050      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4051      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4052      -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
    40814053      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    40824054      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    4083       -1,    -1,    39,    -1,    10,    11,    12,    13,    14,    15,
     4055      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     4056      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4057      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4058      67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4059      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4060      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4061      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4062      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4063      -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4064      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4065      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4066      -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
     4067      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4068      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4069      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     4070      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4071      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4072      67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4073      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4074      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4075      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4076      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4077      -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4078      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4079      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4080      -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
     4081      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4082      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4083      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     4084      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4085      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4086      67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4087      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4088      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4089      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4090      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4091      -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4092      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4093      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4094      -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
     4095      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4096      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4097      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     4098      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4099      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4100      67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4101      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4102      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4103      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4104      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4105      -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4106      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4107      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4108      -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
     4109      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4110      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4111      -1,    -1,    39,    -1,    -1,     4,     5,     6,     7,     8,
     4112       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     4113      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     4114      67,    30,    31,    32,    -1,    -1,    -1,    74,    75,    -1,
     4115      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4116      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4117      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     4118      69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
     4119      -1,   118,   119,    37,    38,    -1,    40,    41,    -1,    43,
     4120      -1,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
     4121      -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,
     4122      64,   110,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     4123      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     4124      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     4125      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4126      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     4127     114,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     4128      -1,    -1,    -1,    -1,   128,    -1,    37,    38,   132,    40,
     4129      41,    -1,    43,    -1,    -1,    46,    47,    48,    49,    50,
     4130      51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,
     4131      61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,
     4132      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
     4133      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     4134      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     4135      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     4136     111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,   120,
     4137     121,   122,   123,    -1,    -1,    -1,    -1,   128,    -1,    -1,
     4138      -1,   132,     4,     5,     6,     7,     8,     9,    10,    11,
     4139      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     4140      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     4141      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    37,
     4142      38,    -1,    40,    41,    -1,    43,    44,    45,    46,    47,
     4143      48,    49,    50,    51,    52,    53,    -1,    -1,    56,    57,
     4144      -1,    -1,    -1,    61,    62,    67,    64,    69,    66,    71,
     4145      -1,    -1,    74,    75,    72,    -1,    -1,    -1,    76,    -1,
     4146      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     4147      -1,    -1,    -1,    -1,    96,    -1,    94,    -1,    -1,    -1,
     4148      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4149      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,
     4150     118,   119,   120,   121,   122,   123,    -1,    -1,    37,    38,
     4151     128,    40,    41,    -1,    43,    44,    45,    46,    47,    48,
     4152      49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
     4153      -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
     4154      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     4155      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     4156      -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
     4157      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4158     109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,
     4159     119,   120,   121,   122,   123,    -1,    -1,    37,    38,   128,
     4160      40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
     4161      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
     4162      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
     4163      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     4164      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     4165      -1,    -1,    -1,    -1,    94,    37,    38,    -1,    40,    -1,
     4166      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     4167      -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,
     4168     120,   121,   122,   123,    66,    -1,    -1,    -1,   128,    -1,
     4169      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
     4170      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     4171      -1,    -1,    94,    37,    38,    -1,    40,    -1,    -1,    -1,
     4172      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     4173      -1,    -1,    37,    38,    -1,    40,   118,   119,   120,   121,
     4174     122,   123,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     4175      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     4176      84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,    -1,
     4177      94,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     4178      -1,    86,    87,    -1,    -1,   109,    -1,   111,    -1,    94,
     4179      37,    38,    -1,    40,   118,   119,   120,   121,   122,   123,
     4180      -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    37,
     4181      38,    -1,    40,   118,   119,   120,   121,   122,   123,    66,
     4182      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     4183      -1,    -1,    79,    80,    81,    82,    83,    84,    66,    86,
     4184      87,    -1,    -1,    -1,    72,    -1,    -1,    94,    76,    -1,
     4185      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     4186      -1,    -1,   109,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     4187      -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
     4188      -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4189     118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
     4190       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     4191      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     4192      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4193      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4194      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4195      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     4196      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
     4197      -1,    -1,    -1,    -1,    -1,    83,    84,     3,     4,     5,
     4198       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    40844199      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4085       26,    27,    -1,    -1,    30,    31,    32,    33,    34,    35,
    4086       67,    -1,    69,    39,    71,    -1,    -1,    74,    75,    -1,
     4200      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     4201      -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
    40874202      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40884203      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4089       -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75
     4204      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
     4205       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     4206      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     4207      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     4208      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
     4209      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4210      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4211      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
     4212      -1,    74,    75,     4,     5,     6,     7,     8,     9,    10,
     4213      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     4214      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     4215      31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
     4216      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4217      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4218      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
     4219      71,    -1,    -1,    74,    75
    40904220};
    40914221
     
    40984228      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    40994229      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    4100       76,    83,    84,   109,   111,   119,   137,   140,   197,   211,
    4101      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
    4102      222,   223,   224,   225,   226,   227,   228,   230,   231,   232,
    4103      233,   234,   235,   236,   237,   239,   240,   241,   242,   243,
    4104      244,   246,   254,   255,   282,   283,   284,   292,   295,   301,
    4105      302,   304,   306,   307,   313,   318,   322,   323,   324,   325,
    4106      326,   327,   328,   329,   349,   366,   367,   368,   369,    72,
    4107      119,   139,   140,   214,   216,   224,   226,   236,   240,   242,
    4108      283,    82,   109,   311,   312,   313,   311,   311,    72,    74,
    4109       75,    76,   138,   139,   272,   273,   293,   294,    74,    75,
    4110      273,   109,   304,    11,   198,   109,   119,   318,   323,   324,
    4111      325,   327,   328,   329,   112,   134,   111,   217,   224,   226,
    4112      322,   326,   365,   366,   369,   370,   135,   107,   131,   276,
    4113      114,   135,   172,    74,    75,   137,   271,   135,   135,   135,
    4114      116,   135,    74,    75,   109,   119,   308,   317,   318,   319,
    4115      320,   321,   322,   326,   330,   331,   332,   333,   334,   340,
    4116        3,    28,    78,   238,     3,     5,    74,   111,   119,   216,
    4117      227,   231,   234,   243,   284,   322,   326,   369,   214,   216,
    4118      226,   236,   240,   242,   283,   322,   326,    33,   232,   232,
    4119      227,   234,   135,   232,   227,   232,   227,    75,   109,   114,
    4120      273,   284,   114,   273,   232,   227,   116,   135,   135,     0,
    4121      134,   109,   172,   311,   311,   134,   111,   224,   226,   367,
    4122      271,   271,   226,   131,   109,   119,   308,   318,   322,   111,
    4123      119,   369,   305,   229,   313,   109,   289,   109,   109,    51,
    4124      109,    37,    38,    40,    66,    72,    76,    79,    80,    81,
    4125       82,    86,    87,    94,   109,   111,   118,   119,   120,   121,
     4230      76,    83,    84,    94,   109,   111,   118,   119,   137,   140,
     4231     149,   198,   212,   213,   214,   215,   216,   217,   218,   219,
     4232     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
     4233     231,   232,   233,   234,   235,   236,   237,   238,   240,   241,
     4234     242,   243,   244,   245,   247,   255,   256,   283,   284,   285,
     4235     293,   296,   302,   303,   305,   307,   308,   314,   319,   323,
     4236     324,   325,   326,   327,   328,   329,   330,   350,   367,   368,
     4237     369,   370,    72,   139,   140,   149,   215,   217,   225,   227,
     4238     237,   241,   243,   284,    82,   109,   312,   313,   314,   312,
     4239     312,    72,    74,    75,    76,   138,   139,   273,   274,   294,
     4240     295,    74,    75,   274,   109,   305,    11,   199,   109,   149,
     4241     319,   324,   325,   326,   328,   329,   330,   112,   134,   111,
     4242     218,   225,   227,   323,   327,   366,   367,   370,   371,   135,
     4243     107,   131,   277,   114,   135,   173,    74,    75,   137,   272,
     4244     135,   135,   135,   116,   135,    74,    75,   109,   149,   309,
     4245     318,   319,   320,   321,   322,   323,   327,   331,   332,   333,
     4246     334,   335,   341,     3,    28,    78,   239,     3,     5,    74,
     4247     111,   149,   217,   228,   232,   235,   244,   285,   323,   327,
     4248     370,   215,   217,   227,   237,   241,   243,   284,   323,   327,
     4249      33,   233,   233,   228,   235,   135,   233,   228,   233,   228,
     4250      75,   109,   114,   274,   285,   114,   274,   233,   228,   116,
     4251     135,   135,     0,   134,   109,   173,   312,   312,   134,   111,
     4252     225,   227,   368,   272,   272,   131,   227,   109,   149,   309,
     4253     319,   323,   111,   149,   370,   306,   230,   314,   109,   290,
     4254     109,   109,    51,   109,    37,    38,    40,    66,    72,    76,
     4255      79,    80,    81,    82,    86,    87,   109,   111,   120,   121,
    41264256     122,   123,   136,   140,   141,   142,   143,   148,   149,   150,
    41274257     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
    4128      161,   163,   165,   224,   275,   291,   365,   370,   226,   110,
    4129      110,   110,   110,   110,   110,   110,    74,    75,   111,   224,
    4130      271,   349,   367,   111,   119,   163,   216,   217,   223,   226,
    4131      230,   231,   236,   239,   240,   242,   261,   262,   266,   267,
    4132      268,   269,   283,   349,   361,   362,   363,   364,   369,   370,
    4133      112,   109,   322,   326,   369,   109,   116,   132,   111,   114,
    4134      119,   163,   277,   277,   115,   134,   116,   132,   109,   116,
    4135      132,   116,   132,   116,   132,   311,   132,   318,   319,   320,
    4136      321,   331,   332,   333,   334,   226,   317,   330,    64,   310,
    4137      111,   311,   348,   349,   311,   311,   172,   134,   109,   311,
    4138      348,   311,   311,   226,   308,   109,   109,   225,   226,   224,
    4139      226,   112,   134,   224,   365,   370,   172,   134,   271,   276,
    4140      216,   231,   322,   326,   172,   134,   293,   226,   236,   132,
    4141      226,   226,   291,    40,   111,   224,   247,   248,   249,   250,
    4142      365,   369,   245,   257,   273,   256,   226,   293,   132,   132,
    4143      304,   134,   139,   270,     3,   135,   206,   207,   221,   223,
    4144      226,   134,   310,   109,   310,   163,   318,   226,   109,   134,
    4145      271,   114,    33,    34,    35,   224,   285,   286,   288,   134,
    4146      129,   131,   290,   134,   227,   233,   234,   271,   314,   315,
    4147      316,   109,   141,   109,   148,   109,   148,   150,   109,   148,
    4148      109,   109,   148,   148,   139,   111,   163,   168,   172,   224,
    4149      274,   365,   112,   134,   150,   150,    82,    85,    86,    87,
    4150      109,   111,   113,   114,    97,    98,    99,   100,   101,   102,
    4151      103,   104,   105,   106,   131,   167,   150,   119,   124,   125,
    4152      121,   122,    88,    89,    90,    91,   126,   127,    92,    93,
    4153      120,   128,   129,    94,    95,   130,   131,   372,   109,   119,
    4154      344,   345,   346,   347,   348,   110,   116,   109,   348,   349,
    4155      109,   348,   349,   134,   109,   224,   367,   112,   134,   111,
    4156      119,   135,   224,   226,   360,   361,   369,   370,   135,   109,
    4157      111,   119,   318,   335,   336,   337,   338,   339,   340,   341,
    4158      342,   343,   349,   350,   351,   352,   353,   354,   355,   119,
    4159      369,   226,   135,   135,   119,   224,   226,   362,   271,   224,
    4160      349,   362,   271,   109,   134,   134,   134,   112,   134,    72,
    4161       80,   111,   113,   140,   273,   277,   278,   279,   280,   281,
    4162      134,   134,   134,   134,   134,   134,   308,   110,   110,   110,
    4163      110,   110,   110,   110,   317,   330,   109,   276,   112,   206,
    4164      134,   308,   168,   275,   168,   275,   308,   111,   206,   310,
    4165      172,   134,   206,   110,   249,   250,   112,   134,   109,   117,
    4166      119,   251,   253,   317,   318,   330,   348,   356,   357,   358,
    4167      359,   115,   248,   116,   132,   116,   132,   273,   114,   116,
    4168      371,   131,   258,   114,   226,   263,   264,   265,   268,   269,
    4169      110,   116,   172,   134,   119,   163,   134,   223,   226,   262,
    4170      361,   369,   302,   303,   109,   119,   335,   110,   116,   372,
    4171      273,   285,   109,   114,   273,   275,   285,   110,   116,   109,
    4172      141,   110,   117,   274,   274,   274,   111,   139,   145,   163,
    4173      275,   274,   112,   134,   110,   116,   110,   109,   119,   356,
    4174      110,   116,   163,   111,   139,   111,   144,   145,   134,   111,
    4175      139,   144,   163,   163,   150,   150,   150,   151,   151,   152,
    4176      152,   153,   153,   153,   153,   154,   154,   155,   156,   157,
    4177      158,   159,   117,   168,   163,   134,   345,   346,   347,   226,
    4178      344,   311,   311,   163,   275,   134,   270,   119,   134,   224,
    4179      349,   362,   226,   230,   112,   134,   112,   369,   112,   109,
    4180      134,   318,   336,   337,   338,   341,   351,   352,   353,   112,
    4181      134,   226,   335,   339,   350,   109,   311,   354,   372,   311,
    4182      311,   372,   109,   311,   354,   311,   311,   311,   311,   349,
    4183      224,   360,   370,   271,   112,   116,   112,   116,   372,   224,
    4184      362,   372,   259,   260,   261,   262,   259,   259,   271,   163,
    4185      134,   111,   273,   117,   116,   371,   277,    80,   111,   117,
    4186      281,    29,   208,   209,   271,   259,   139,   308,   139,   310,
    4187      109,   348,   349,   109,   348,   349,   141,   349,   172,   263,
    4188      110,   110,   110,   110,   112,   172,   206,   172,   114,   132,
    4189      132,   111,   318,   357,   358,   359,   161,   162,   226,   356,
    4190      252,   253,   252,   311,   311,   273,   311,   247,   273,   115,
    4191      162,   257,   135,   135,   139,   221,   135,   135,   259,   109,
    4192      119,   369,   135,   115,   226,   286,   287,   135,   134,   134,
    4193      109,   135,   110,   315,   168,   169,   117,   132,   111,   141,
    4194      199,   200,   201,   110,   116,   110,   134,   117,   110,   110,
    4195      110,   163,   226,   114,   150,   165,   163,   164,   166,   116,
    4196      135,   134,   134,   110,   116,   163,   134,   115,   161,   117,
    4197      263,   110,   110,   110,   344,   263,   110,   259,   224,   362,
    4198      111,   119,   163,   163,   226,   341,   263,   110,   110,   110,
    4199      110,   110,   110,   110,     7,   226,   335,   339,   350,   134,
    4200      134,   372,   134,   134,   110,   135,   135,   135,   135,   276,
    4201      135,   161,   162,   163,   309,   134,   277,   279,   115,   134,
    4202      210,   273,    40,    41,    43,    46,    47,    48,    49,    50,
    4203       51,    52,    53,    57,    61,    62,   111,   128,   139,   169,
    4204      170,   171,   172,   173,   174,   176,   177,   189,   191,   192,
    4205      197,   211,   307,    29,   135,   131,   276,   134,   134,   110,
    4206      135,   172,   247,   112,   110,   110,   110,   356,   251,   115,
    4207      258,   371,   110,   116,   112,   112,   135,   226,   116,   372,
    4208      289,   110,   285,   214,   216,   224,   297,   298,   299,   300,
    4209      291,   110,   110,   117,   162,   109,   110,   117,   116,   139,
    4210      163,   163,   278,   116,   135,   166,   112,   139,   146,   147,
    4211      163,   145,   135,   146,   161,   165,   135,   109,   348,   349,
    4212      135,   135,   134,   135,   135,   135,   163,   110,   135,   109,
    4213      348,   349,   109,   354,   109,   354,   349,   225,     7,   119,
    4214      135,   163,   263,   263,   262,   266,   266,   267,   116,   116,
    4215      110,   110,   112,    96,   123,   135,   135,   146,   277,   163,
    4216      116,   132,   211,   215,   226,   230,   109,   109,   170,   109,
    4217      109,   132,   139,   132,   139,   119,   139,   169,   109,   172,
    4218      164,   164,   112,   143,   117,   132,   135,   134,   135,   210,
    4219      110,   163,   263,   263,   311,   110,   115,   109,   348,   349,
    4220      115,   134,   110,   134,   135,   308,   115,   134,   135,   135,
    4221      110,   114,   199,   112,   162,   132,   199,   201,   110,   116,
    4222      135,   371,   164,   112,   135,    85,   113,   116,   135,   135,
    4223      112,   135,   110,   134,   110,   110,   112,   112,   112,   135,
    4224      110,   134,   134,   134,   163,   163,   135,   112,   135,   135,
    4225      135,   135,   134,   134,   162,   162,   112,   112,   135,   135,
    4226      273,   226,   168,   168,    47,   168,   134,   132,   132,   168,
    4227      132,   132,   168,    58,    59,    60,   193,   194,   195,   132,
    4228       63,   132,   114,   311,   174,   115,   132,   135,   135,   134,
    4229       96,   268,   269,   110,   298,   116,   132,   116,   132,   115,
    4230      296,   117,   141,   110,   110,   117,   166,   112,   115,   112,
    4231      111,   147,   111,   147,   147,   112,   112,   112,   263,   112,
    4232      263,   263,   263,   135,   135,   112,   112,   110,   110,   112,
    4233      116,    96,   262,    96,   135,   112,   112,   110,   110,   109,
    4234      110,   169,   190,   211,   132,   110,   109,   109,   172,   195,
    4235       58,    59,   163,   144,   170,   110,   110,   263,   114,   134,
    4236      134,   297,   141,   202,   109,   132,   202,   135,   117,   134,
    4237      134,   135,   135,   135,   135,   112,   112,   134,   135,   112,
    4238      170,    44,    45,   114,   180,   181,   182,   168,   170,   135,
    4239      110,   169,   114,   182,    96,   134,    96,   134,   109,   109,
    4240      132,   115,   135,   134,   271,   308,   115,   116,   117,   162,
    4241      110,   112,   163,   146,   146,   110,   110,   110,   110,   266,
    4242       42,   162,   178,   179,   309,   117,   134,   170,   180,   110,
    4243      132,   170,   132,   134,   110,   134,   110,   134,    96,   134,
    4244       96,   134,   132,   110,   297,   141,   139,   203,   110,   132,
    4245      117,   135,   135,   170,    96,   116,   117,   135,   204,   205,
    4246      211,   132,   169,   169,   204,   172,   196,   224,   365,   172,
    4247      196,   110,   134,   110,   134,   115,   110,   116,   163,   112,
    4248      112,   162,   178,   181,   183,   184,   134,   132,   181,   185,
    4249      186,   135,   109,   119,   308,   356,   139,   135,   172,   196,
    4250      172,   196,   109,   132,   139,   170,   175,   115,   181,   211,
    4251      169,    56,   175,   188,   115,   181,   110,   226,   110,   135,
    4252      135,   291,   170,   175,   132,   187,   188,   175,   188,   172,
    4253      172,   110,   110,   110,   187,   135,   135,   172,   172,   135,
    4254      135
     4258     161,   162,   164,   166,   225,   276,   292,   366,   371,   227,
     4259     110,   110,   110,   110,   110,   110,   110,    74,    75,   111,
     4260     225,   272,   350,   368,   111,   118,   149,   164,   217,   218,
     4261     224,   227,   231,   232,   237,   240,   241,   243,   262,   263,
     4262     267,   268,   269,   270,   284,   350,   362,   363,   364,   365,
     4263     370,   371,   112,   109,   323,   327,   370,   109,   116,   132,
     4264     111,   114,   149,   164,   278,   278,   115,   134,   116,   132,
     4265     109,   116,   132,   116,   132,   116,   132,   312,   132,   319,
     4266     320,   321,   322,   332,   333,   334,   335,   227,   318,   331,
     4267      64,   311,   111,   312,   349,   350,   312,   312,   173,   134,
     4268     109,   312,   349,   312,   312,   227,   309,   109,   109,   226,
     4269     227,   225,   227,   112,   134,   225,   366,   371,   173,   134,
     4270     272,   277,   217,   232,   323,   327,   173,   134,   294,   227,
     4271     237,   132,   227,   227,   292,    40,   111,   225,   248,   249,
     4272     250,   251,   366,   370,   246,   258,   274,   257,   227,   294,
     4273     132,   132,   305,   134,   139,   271,     3,   135,   207,   208,
     4274     222,   224,   227,   134,   311,   109,   311,   164,   319,   227,
     4275     109,   134,   272,   114,    33,    34,    35,   225,   286,   287,
     4276     289,   134,   129,   131,   291,   134,   228,   234,   235,   272,
     4277     315,   316,   317,   109,   141,   109,   148,   109,   148,   151,
     4278     109,   148,   109,   109,   148,   148,   111,   164,   169,   173,
     4279     225,   275,   366,   112,   134,    82,    85,    86,    87,   109,
     4280     111,   113,   114,    97,    98,    99,   100,   101,   102,   103,
     4281     104,   105,   106,   131,   168,   151,   151,   118,   124,   125,
     4282     120,   121,    88,    89,    90,    91,   126,   127,    92,    93,
     4283     119,   128,   129,    94,    95,   130,   131,   373,   109,   149,
     4284     345,   346,   347,   348,   349,   110,   116,   109,   349,   350,
     4285     109,   349,   350,   134,   109,   225,   368,   112,   134,   135,
     4286     111,   225,   227,   361,   362,   370,   371,   135,   109,   111,
     4287     149,   319,   336,   337,   338,   339,   340,   341,   342,   343,
     4288     344,   350,   351,   352,   353,   354,   355,   356,   149,   370,
     4289     227,   135,   135,   149,   225,   227,   363,   272,   225,   350,
     4290     363,   272,   109,   134,   134,   134,   112,   134,    72,    80,
     4291     111,   113,   140,   274,   278,   279,   280,   281,   282,   134,
     4292     134,   134,   134,   134,   134,   309,   110,   110,   110,   110,
     4293     110,   110,   110,   318,   331,   109,   277,   112,   207,   134,
     4294     309,   169,   276,   169,   276,   309,   111,   207,   311,   173,
     4295     134,   207,   110,   250,   251,   112,   134,   109,   117,   149,
     4296     252,   254,   318,   319,   331,   349,   357,   358,   359,   360,
     4297     115,   249,   116,   132,   116,   132,   274,   114,   116,   372,
     4298     131,   259,   114,   227,   264,   265,   266,   269,   270,   110,
     4299     116,   173,   134,   118,   164,   134,   224,   227,   263,   362,
     4300     370,   303,   304,   109,   149,   336,   110,   116,   373,   274,
     4301     286,   109,   114,   274,   276,   286,   110,   116,   109,   141,
     4302     110,   117,   275,   275,   275,   111,   139,   145,   164,   276,
     4303     275,   112,   134,   110,   116,   110,   109,   149,   357,   110,
     4304     116,   164,   111,   139,   111,   144,   145,   134,   111,   139,
     4305     144,   164,   164,   151,   151,   151,   152,   152,   153,   153,
     4306     154,   154,   154,   154,   155,   155,   156,   157,   158,   159,
     4307     160,   117,   169,   164,   134,   346,   347,   348,   227,   345,
     4308     312,   312,   164,   276,   134,   271,   134,   225,   350,   363,
     4309     227,   231,   112,   112,   134,   370,   112,   109,   134,   319,
     4310     337,   338,   339,   342,   352,   353,   354,   112,   134,   227,
     4311     336,   340,   351,   109,   312,   355,   373,   312,   312,   373,
     4312     109,   312,   355,   312,   312,   312,   312,   350,   225,   361,
     4313     371,   272,   112,   116,   112,   116,   373,   225,   363,   373,
     4314     260,   261,   262,   263,   260,   260,   272,   164,   134,   111,
     4315     274,   117,   116,   372,   278,    80,   111,   117,   282,    29,
     4316     209,   210,   272,   260,   139,   309,   139,   311,   109,   349,
     4317     350,   109,   349,   350,   141,   350,   173,   264,   110,   110,
     4318     110,   110,   112,   173,   207,   173,   114,   132,   132,   111,
     4319     319,   358,   359,   360,   162,   163,   227,   357,   253,   254,
     4320     253,   312,   312,   274,   312,   248,   274,   115,   163,   258,
     4321     135,   135,   139,   222,   135,   135,   260,   109,   149,   370,
     4322     135,   115,   227,   287,   288,   135,   134,   134,   109,   135,
     4323     110,   316,   169,   170,   117,   132,   111,   141,   200,   201,
     4324     202,   110,   116,   110,   134,   117,   110,   110,   110,   164,
     4325     227,   114,   151,   166,   164,   165,   167,   116,   135,   134,
     4326     134,   110,   116,   164,   134,   115,   162,   117,   264,   110,
     4327     110,   110,   345,   264,   110,   260,   225,   363,   111,   118,
     4328     149,   164,   164,   227,   342,   264,   110,   110,   110,   110,
     4329     110,   110,   110,     7,   227,   336,   340,   351,   134,   134,
     4330     373,   134,   134,   110,   135,   135,   135,   135,   277,   135,
     4331     162,   163,   164,   310,   134,   278,   280,   115,   134,   211,
     4332     274,    40,    41,    43,    46,    47,    48,    49,    50,    51,
     4333      52,    53,    57,    61,    62,    72,   111,   128,   170,   171,
     4334     172,   173,   174,   175,   177,   178,   190,   192,   193,   198,
     4335     212,   308,    29,   135,   131,   277,   134,   134,   110,   135,
     4336     173,   248,   112,   110,   110,   110,   357,   252,   115,   259,
     4337     372,   110,   116,   112,   112,   135,   227,   116,   373,   290,
     4338     110,   286,   215,   217,   225,   298,   299,   300,   301,   292,
     4339     110,   110,   117,   163,   109,   110,   117,   116,   139,   164,
     4340     164,   279,   116,   135,   167,   112,   139,   146,   147,   164,
     4341     145,   135,   146,   162,   166,   135,   109,   349,   350,   135,
     4342     135,   134,   135,   135,   135,   164,   110,   135,   109,   349,
     4343     350,   109,   355,   109,   355,   350,   226,     7,   118,   135,
     4344     164,   264,   264,   263,   267,   267,   268,   116,   116,   110,
     4345     110,   112,    96,   123,   135,   135,   146,   278,   164,   116,
     4346     132,   212,   216,   227,   231,   109,   109,   171,   109,   109,
     4347      72,   132,    72,   132,    72,   118,   170,   109,   173,   165,
     4348     165,   117,   112,   143,   132,   135,   134,   135,   211,   110,
     4349     164,   264,   264,   312,   110,   115,   109,   349,   350,   115,
     4350     134,   110,   134,   135,   309,   115,   134,   135,   135,   110,
     4351     114,   200,   112,   163,   132,   200,   202,   110,   116,   135,
     4352     372,   165,   112,   135,    85,   113,   116,   135,   135,   112,
     4353     135,   110,   134,   110,   110,   112,   112,   112,   135,   110,
     4354     134,   134,   134,   164,   164,   135,   112,   135,   135,   135,
     4355     135,   134,   134,   163,   163,   112,   112,   135,   135,   274,
     4356     227,   169,   169,    47,   169,   134,   132,   132,   132,   169,
     4357     132,   169,    58,    59,    60,   194,   195,   196,   132,    63,
     4358     132,   312,   114,   175,   115,   132,   135,   135,   134,    96,
     4359     269,   270,   110,   299,   116,   132,   116,   132,   115,   297,
     4360     117,   141,   110,   110,   117,   167,   112,   115,   112,   111,
     4361     147,   111,   147,   147,   112,   112,   112,   264,   112,   264,
     4362     264,   264,   135,   135,   112,   112,   110,   110,   112,   116,
     4363      96,   263,    96,   135,   112,   112,   110,   110,   109,   110,
     4364     170,   191,   212,   132,   110,   109,   109,   173,   196,    58,
     4365      59,   164,   171,   144,   110,   110,   264,   114,   134,   134,
     4366     298,   141,   203,   109,   132,   203,   135,   117,   134,   134,
     4367     135,   135,   135,   135,   112,   112,   134,   135,   112,   171,
     4368      44,    45,   114,   181,   182,   183,   169,   171,   135,   110,
     4369     170,   114,   183,    96,   134,    96,   134,   109,   109,   132,
     4370     115,   135,   134,   272,   309,   115,   116,   117,   163,   110,
     4371     112,   164,   146,   146,   110,   110,   110,   110,   267,    42,
     4372     163,   179,   180,   310,   117,   134,   171,   181,   110,   132,
     4373     171,   132,   134,   110,   134,   110,   134,    96,   134,    96,
     4374     134,   132,   110,   298,   141,   139,   204,   110,   132,   117,
     4375     135,   135,   171,    96,   116,   117,   135,   205,   206,   212,
     4376     132,   170,   170,   205,   173,   197,   225,   366,   173,   197,
     4377     110,   134,   110,   134,   115,   110,   116,   164,   112,   112,
     4378     163,   179,   182,   184,   185,   134,   132,   182,   186,   187,
     4379     135,   109,   149,   309,   357,   139,   135,   173,   197,   173,
     4380     197,   109,   132,   139,   171,   176,   115,   182,   212,   170,
     4381      56,   176,   189,   115,   182,   110,   227,   110,   135,   135,
     4382     292,   171,   176,   132,   188,   189,   176,   189,   173,   173,
     4383     110,   110,   110,   188,   135,   135,   173,   173,   135,   135
    42554384};
    42564385
     
    50895218
    50905219/* Line 1806 of yacc.c  */
    5091 #line 292 "parser.yy"
     5220#line 290 "parser.yy"
    50925221    {
    50935222                        typedefTable.enterScope();
     
    50985227
    50995228/* Line 1806 of yacc.c  */
    5100 #line 298 "parser.yy"
     5229#line 296 "parser.yy"
    51015230    {
    51025231                        typedefTable.leaveScope();
     
    51075236
    51085237/* Line 1806 of yacc.c  */
     5238#line 305 "parser.yy"
     5239    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
     5240    break;
     5241
     5242  case 5:
     5243
     5244/* Line 1806 of yacc.c  */
     5245#line 306 "parser.yy"
     5246    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
     5247    break;
     5248
     5249  case 6:
     5250
     5251/* Line 1806 of yacc.c  */
    51095252#line 307 "parser.yy"
    5110     { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    5111     break;
    5112 
    5113   case 5:
    5114 
    5115 /* Line 1806 of yacc.c  */
    5116 #line 308 "parser.yy"
    5117     { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    5118     break;
    5119 
    5120   case 6:
    5121 
    5122 /* Line 1806 of yacc.c  */
    5123 #line 309 "parser.yy"
    51245253    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    51255254    break;
     
    51285257
    51295258/* Line 1806 of yacc.c  */
    5130 #line 334 "parser.yy"
     5259#line 332 "parser.yy"
    51315260    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    51325261    break;
     
    51355264
    51365265/* Line 1806 of yacc.c  */
    5137 #line 335 "parser.yy"
     5266#line 333 "parser.yy"
    51385267    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    51395268    break;
    51405269
    51415270  case 18:
     5271
     5272/* Line 1806 of yacc.c  */
     5273#line 340 "parser.yy"
     5274    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5275    break;
     5276
     5277  case 19:
    51425278
    51435279/* Line 1806 of yacc.c  */
     
    51465282    break;
    51475283
    5148   case 19:
     5284  case 20:
    51495285
    51505286/* Line 1806 of yacc.c  */
    51515287#line 344 "parser.yy"
    5152     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    5153     break;
    5154 
    5155   case 20:
     5288    { (yyval.en) = (yyvsp[(2) - (3)].en); }
     5289    break;
     5290
     5291  case 21:
    51565292
    51575293/* Line 1806 of yacc.c  */
    51585294#line 346 "parser.yy"
    5159     { (yyval.en) = (yyvsp[(2) - (3)].en); }
    5160     break;
    5161 
    5162   case 21:
    5163 
    5164 /* Line 1806 of yacc.c  */
    5165 #line 348 "parser.yy"
    51665295    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    51675296    break;
     
    51705299
    51715300/* Line 1806 of yacc.c  */
     5301#line 356 "parser.yy"
     5302    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
     5303    break;
     5304
     5305  case 24:
     5306
     5307/* Line 1806 of yacc.c  */
    51725308#line 358 "parser.yy"
    5173     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    5174     break;
    5175 
    5176   case 24:
    5177 
    5178 /* Line 1806 of yacc.c  */
    5179 #line 360 "parser.yy"
    51805309    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    51815310    break;
     
    51845313
    51855314/* Line 1806 of yacc.c  */
    5186 #line 364 "parser.yy"
     5315#line 362 "parser.yy"
    51875316    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    51885317    break;
     
    51915320
    51925321/* Line 1806 of yacc.c  */
    5193 #line 367 "parser.yy"
     5322#line 365 "parser.yy"
    51945323    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    51955324    break;
     
    51985327
    51995328/* Line 1806 of yacc.c  */
     5329#line 368 "parser.yy"
     5330    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
     5331    break;
     5332
     5333  case 30:
     5334
     5335/* Line 1806 of yacc.c  */
    52005336#line 370 "parser.yy"
    5201     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    5202     break;
    5203 
    5204   case 30:
     5337    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
     5338    break;
     5339
     5340  case 31:
    52055341
    52065342/* Line 1806 of yacc.c  */
    52075343#line 372 "parser.yy"
    5208     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    5209     break;
    5210 
    5211   case 31:
     5344    { (yyval.en) = new CompoundLiteralNode( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ); }
     5345    break;
     5346
     5347  case 32:
    52125348
    52135349/* Line 1806 of yacc.c  */
    52145350#line 374 "parser.yy"
    5215     { (yyval.en) = new CompoundLiteralNode( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ); }
    5216     break;
    5217 
    5218   case 32:
    5219 
    5220 /* Line 1806 of yacc.c  */
    5221 #line 376 "parser.yy"
    52225351    {
    52235352                        Token fn; fn.str = new std::string( "?{}" ); // location undefined
     
    52295358
    52305359/* Line 1806 of yacc.c  */
    5231 #line 385 "parser.yy"
     5360#line 383 "parser.yy"
    52325361    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    52335362    break;
     
    52365365
    52375366/* Line 1806 of yacc.c  */
    5238 #line 390 "parser.yy"
     5367#line 388 "parser.yy"
    52395368    { (yyval.en) = 0; }
    52405369    break;
     
    52435372
    52445373/* Line 1806 of yacc.c  */
    5245 #line 393 "parser.yy"
     5374#line 391 "parser.yy"
    52465375    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
    52475376    break;
     
    52505379
    52515380/* Line 1806 of yacc.c  */
     5381#line 396 "parser.yy"
     5382    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
     5383    break;
     5384
     5385  case 39:
     5386
     5387/* Line 1806 of yacc.c  */
    52525388#line 398 "parser.yy"
    5253     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
    5254     break;
    5255 
    5256   case 39:
    5257 
    5258 /* Line 1806 of yacc.c  */
    5259 #line 400 "parser.yy"
    52605389    { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
    52615390    break;
     
    52645393
    52655394/* Line 1806 of yacc.c  */
    5266 #line 405 "parser.yy"
     5395#line 403 "parser.yy"
    52675396    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    52685397    break;
     
    52715400
    52725401/* Line 1806 of yacc.c  */
    5273 #line 410 "parser.yy"
     5402#line 408 "parser.yy"
    52745403    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    52755404    break;
     
    52785407
    52795408/* Line 1806 of yacc.c  */
     5409#line 412 "parser.yy"
     5410    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
     5411    break;
     5412
     5413  case 44:
     5414
     5415/* Line 1806 of yacc.c  */
    52805416#line 414 "parser.yy"
    5281     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5282     break;
    5283 
    5284   case 44:
     5417    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
     5418    break;
     5419
     5420  case 45:
    52855421
    52865422/* Line 1806 of yacc.c  */
    52875423#line 416 "parser.yy"
    5288     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5289     break;
    5290 
    5291   case 45:
     5424    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
     5425    break;
     5426
     5427  case 46:
    52925428
    52935429/* Line 1806 of yacc.c  */
    52945430#line 418 "parser.yy"
    5295     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5296     break;
    5297 
    5298   case 46:
    5299 
    5300 /* Line 1806 of yacc.c  */
    5301 #line 420 "parser.yy"
    53025431    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    53035432    break;
    53045433
    53055434  case 48:
     5435
     5436/* Line 1806 of yacc.c  */
     5437#line 426 "parser.yy"
     5438    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5439    break;
     5440
     5441  case 49:
    53065442
    53075443/* Line 1806 of yacc.c  */
     
    53105446    break;
    53115447
    5312   case 49:
     5448  case 50:
    53135449
    53145450/* Line 1806 of yacc.c  */
    53155451#line 430 "parser.yy"
    5316     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5317     break;
    5318 
    5319   case 50:
     5452    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     5453    break;
     5454
     5455  case 51:
    53205456
    53215457/* Line 1806 of yacc.c  */
    53225458#line 432 "parser.yy"
     5459    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     5460    break;
     5461
     5462  case 52:
     5463
     5464/* Line 1806 of yacc.c  */
     5465#line 437 "parser.yy"
     5466    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     5467    break;
     5468
     5469  case 53:
     5470
     5471/* Line 1806 of yacc.c  */
     5472#line 439 "parser.yy"
    53235473    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    53245474    break;
    53255475
    5326   case 51:
    5327 
    5328 /* Line 1806 of yacc.c  */
    5329 #line 434 "parser.yy"
     5476  case 54:
     5477
     5478/* Line 1806 of yacc.c  */
     5479#line 441 "parser.yy"
    53305480    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
    53315481    break;
    53325482
    5333   case 52:
    5334 
    5335 /* Line 1806 of yacc.c  */
    5336 #line 436 "parser.yy"
    5337     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    5338     break;
    5339 
    5340   case 53:
    5341 
    5342 /* Line 1806 of yacc.c  */
    5343 #line 438 "parser.yy"
    5344     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5345     break;
    5346 
    5347   case 54:
    5348 
    5349 /* Line 1806 of yacc.c  */
    5350 #line 440 "parser.yy"
    5351     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    5352     break;
    5353 
    53545483  case 55:
    53555484
    53565485/* Line 1806 of yacc.c  */
    5357 #line 442 "parser.yy"
    5358     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
     5486#line 443 "parser.yy"
     5487    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    53595488    break;
    53605489
     
    53625491
    53635492/* Line 1806 of yacc.c  */
    5364 #line 448 "parser.yy"
    5365     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
     5493#line 445 "parser.yy"
     5494    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    53665495    break;
    53675496
     
    53695498
    53705499/* Line 1806 of yacc.c  */
    5371 #line 450 "parser.yy"
    5372     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5500#line 447 "parser.yy"
     5501    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) )); }
    53735502    break;
    53745503
     
    53765505
    53775506/* Line 1806 of yacc.c  */
    5378 #line 452 "parser.yy"
    5379     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) )); }
     5507#line 449 "parser.yy"
     5508    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    53805509    break;
    53815510
     
    53835512
    53845513/* Line 1806 of yacc.c  */
    5385 #line 454 "parser.yy"
    5386     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
     5514#line 451 "parser.yy"
     5515    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    53875516    break;
    53885517
     
    53905519
    53915520/* Line 1806 of yacc.c  */
    5392 #line 456 "parser.yy"
    5393     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5521#line 453 "parser.yy"
     5522    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    53945523    break;
    53955524
     
    53975526
    53985527/* Line 1806 of yacc.c  */
    5399 #line 458 "parser.yy"
    5400     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
     5528#line 455 "parser.yy"
     5529    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    54015530    break;
    54025531
     
    54045533
    54055534/* Line 1806 of yacc.c  */
    5406 #line 460 "parser.yy"
    5407     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
     5535#line 457 "parser.yy"
     5536    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }
    54085537    break;
    54095538
     
    54115540
    54125541/* Line 1806 of yacc.c  */
    5413 #line 462 "parser.yy"
    5414     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }
     5542#line 463 "parser.yy"
     5543    { (yyval.en) = new OperatorNode( OperatorNode::PointTo ); }
    54155544    break;
    54165545
     
    54195548/* Line 1806 of yacc.c  */
    54205549#line 464 "parser.yy"
    5421     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); }
     5550    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    54225551    break;
    54235552
     
    54255554
    54265555/* Line 1806 of yacc.c  */
    5427 #line 468 "parser.yy"
    5428     { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
     5556#line 466 "parser.yy"
     5557    { (yyval.en) = new OperatorNode( OperatorNode::And ); }
    54295558    break;
    54305559
     
    54325561
    54335562/* Line 1806 of yacc.c  */
    5434 #line 469 "parser.yy"
     5563#line 470 "parser.yy"
    54355564    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    54365565    break;
     
    54395568
    54405569/* Line 1806 of yacc.c  */
    5441 #line 470 "parser.yy"
     5570#line 471 "parser.yy"
    54425571    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    54435572    break;
     
    54465575
    54475576/* Line 1806 of yacc.c  */
    5448 #line 471 "parser.yy"
     5577#line 472 "parser.yy"
     5578    { (yyval.en) = new OperatorNode( OperatorNode::Neg ); }
     5579    break;
     5580
     5581  case 69:
     5582
     5583/* Line 1806 of yacc.c  */
     5584#line 473 "parser.yy"
    54495585    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    5450     break;
    5451 
    5452   case 70:
    5453 
    5454 /* Line 1806 of yacc.c  */
    5455 #line 477 "parser.yy"
    5456     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    54575586    break;
    54585587
     
    54645593    break;
    54655594
    5466   case 73:
    5467 
    5468 /* Line 1806 of yacc.c  */
    5469 #line 485 "parser.yy"
     5595  case 72:
     5596
     5597/* Line 1806 of yacc.c  */
     5598#line 481 "parser.yy"
     5599    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
     5600    break;
     5601
     5602  case 74:
     5603
     5604/* Line 1806 of yacc.c  */
     5605#line 487 "parser.yy"
    54705606    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54715607    break;
    54725608
    5473   case 74:
    5474 
    5475 /* Line 1806 of yacc.c  */
    5476 #line 487 "parser.yy"
     5609  case 75:
     5610
     5611/* Line 1806 of yacc.c  */
     5612#line 489 "parser.yy"
    54775613    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54785614    break;
    54795615
    5480   case 75:
    5481 
    5482 /* Line 1806 of yacc.c  */
    5483 #line 489 "parser.yy"
     5616  case 76:
     5617
     5618/* Line 1806 of yacc.c  */
     5619#line 491 "parser.yy"
    54845620    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54855621    break;
    54865622
    5487   case 77:
    5488 
    5489 /* Line 1806 of yacc.c  */
    5490 #line 495 "parser.yy"
     5623  case 78:
     5624
     5625/* Line 1806 of yacc.c  */
     5626#line 497 "parser.yy"
    54915627    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54925628    break;
    54935629
    5494   case 78:
    5495 
    5496 /* Line 1806 of yacc.c  */
    5497 #line 497 "parser.yy"
     5630  case 79:
     5631
     5632/* Line 1806 of yacc.c  */
     5633#line 499 "parser.yy"
    54985634    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54995635    break;
    55005636
    5501   case 80:
    5502 
    5503 /* Line 1806 of yacc.c  */
    5504 #line 503 "parser.yy"
     5637  case 81:
     5638
     5639/* Line 1806 of yacc.c  */
     5640#line 505 "parser.yy"
    55055641    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55065642    break;
    55075643
    5508   case 81:
    5509 
    5510 /* Line 1806 of yacc.c  */
    5511 #line 505 "parser.yy"
     5644  case 82:
     5645
     5646/* Line 1806 of yacc.c  */
     5647#line 507 "parser.yy"
    55125648    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55135649    break;
    55145650
    5515   case 83:
    5516 
    5517 /* Line 1806 of yacc.c  */
    5518 #line 511 "parser.yy"
     5651  case 84:
     5652
     5653/* Line 1806 of yacc.c  */
     5654#line 513 "parser.yy"
    55195655    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55205656    break;
    55215657
    5522   case 84:
    5523 
    5524 /* Line 1806 of yacc.c  */
    5525 #line 513 "parser.yy"
     5658  case 85:
     5659
     5660/* Line 1806 of yacc.c  */
     5661#line 515 "parser.yy"
    55265662    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55275663    break;
    55285664
    5529   case 85:
    5530 
    5531 /* Line 1806 of yacc.c  */
    5532 #line 515 "parser.yy"
     5665  case 86:
     5666
     5667/* Line 1806 of yacc.c  */
     5668#line 517 "parser.yy"
    55335669    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55345670    break;
    55355671
    5536   case 86:
    5537 
    5538 /* Line 1806 of yacc.c  */
    5539 #line 517 "parser.yy"
     5672  case 87:
     5673
     5674/* Line 1806 of yacc.c  */
     5675#line 519 "parser.yy"
    55405676    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55415677    break;
    55425678
    5543   case 88:
    5544 
    5545 /* Line 1806 of yacc.c  */
    5546 #line 523 "parser.yy"
     5679  case 89:
     5680
     5681/* Line 1806 of yacc.c  */
     5682#line 525 "parser.yy"
    55475683    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55485684    break;
    55495685
    5550   case 89:
    5551 
    5552 /* Line 1806 of yacc.c  */
    5553 #line 525 "parser.yy"
     5686  case 90:
     5687
     5688/* Line 1806 of yacc.c  */
     5689#line 527 "parser.yy"
    55545690    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55555691    break;
    55565692
    5557   case 91:
    5558 
    5559 /* Line 1806 of yacc.c  */
    5560 #line 531 "parser.yy"
     5693  case 92:
     5694
     5695/* Line 1806 of yacc.c  */
     5696#line 533 "parser.yy"
    55615697    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55625698    break;
    55635699
    5564   case 93:
    5565 
    5566 /* Line 1806 of yacc.c  */
    5567 #line 537 "parser.yy"
     5700  case 94:
     5701
     5702/* Line 1806 of yacc.c  */
     5703#line 539 "parser.yy"
    55685704    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55695705    break;
    55705706
    5571   case 95:
    5572 
    5573 /* Line 1806 of yacc.c  */
    5574 #line 543 "parser.yy"
     5707  case 96:
     5708
     5709/* Line 1806 of yacc.c  */
     5710#line 545 "parser.yy"
    55755711    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55765712    break;
    55775713
    5578   case 97:
    5579 
    5580 /* Line 1806 of yacc.c  */
    5581 #line 549 "parser.yy"
     5714  case 98:
     5715
     5716/* Line 1806 of yacc.c  */
     5717#line 551 "parser.yy"
    55825718    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55835719    break;
    55845720
    5585   case 99:
    5586 
    5587 /* Line 1806 of yacc.c  */
    5588 #line 555 "parser.yy"
     5721  case 100:
     5722
     5723/* Line 1806 of yacc.c  */
     5724#line 557 "parser.yy"
    55895725    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55905726    break;
    55915727
    5592   case 101:
    5593 
    5594 /* Line 1806 of yacc.c  */
    5595 #line 561 "parser.yy"
     5728  case 102:
     5729
     5730/* Line 1806 of yacc.c  */
     5731#line 563 "parser.yy"
    55965732    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    55975733    break;
    55985734
    5599   case 102:
    5600 
    5601 /* Line 1806 of yacc.c  */
    5602 #line 563 "parser.yy"
     5735  case 103:
     5736
     5737/* Line 1806 of yacc.c  */
     5738#line 565 "parser.yy"
    56035739    { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    56045740    break;
    56055741
    5606   case 103:
    5607 
    5608 /* Line 1806 of yacc.c  */
    5609 #line 565 "parser.yy"
     5742  case 104:
     5743
     5744/* Line 1806 of yacc.c  */
     5745#line 567 "parser.yy"
    56105746    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    56115747    break;
    56125748
    5613   case 106:
    5614 
    5615 /* Line 1806 of yacc.c  */
    5616 #line 576 "parser.yy"
     5749  case 107:
     5750
     5751/* Line 1806 of yacc.c  */
     5752#line 578 "parser.yy"
    56175753    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56185754    break;
    56195755
    5620   case 107:
    5621 
    5622 /* Line 1806 of yacc.c  */
    5623 #line 578 "parser.yy"
     5756  case 108:
     5757
     5758/* Line 1806 of yacc.c  */
     5759#line 580 "parser.yy"
    56245760    { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56255761    break;
    56265762
    5627   case 108:
    5628 
    5629 /* Line 1806 of yacc.c  */
    5630 #line 580 "parser.yy"
     5763  case 109:
     5764
     5765/* Line 1806 of yacc.c  */
     5766#line 582 "parser.yy"
    56315767    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    56325768    break;
    56335769
    5634   case 109:
    5635 
    5636 /* Line 1806 of yacc.c  */
    5637 #line 585 "parser.yy"
     5770  case 110:
     5771
     5772/* Line 1806 of yacc.c  */
     5773#line 587 "parser.yy"
    56385774    { (yyval.en) = new NullExprNode; }
    56395775    break;
    56405776
    5641   case 111:
    5642 
    5643 /* Line 1806 of yacc.c  */
    5644 #line 593 "parser.yy"
     5777  case 112:
     5778
     5779/* Line 1806 of yacc.c  */
     5780#line 595 "parser.yy"
    56455781    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    56465782    break;
    56475783
    5648   case 112:
    5649 
    5650 /* Line 1806 of yacc.c  */
    5651 #line 595 "parser.yy"
     5784  case 113:
     5785
     5786/* Line 1806 of yacc.c  */
     5787#line 597 "parser.yy"
    56525788    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    56535789    break;
    56545790
    5655   case 113:
    5656 
    5657 /* Line 1806 of yacc.c  */
    5658 #line 597 "parser.yy"
     5791  case 114:
     5792
     5793/* Line 1806 of yacc.c  */
     5794#line 599 "parser.yy"
    56595795    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    56605796    break;
    56615797
    5662   case 114:
    5663 
    5664 /* Line 1806 of yacc.c  */
    5665 #line 599 "parser.yy"
     5798  case 115:
     5799
     5800/* Line 1806 of yacc.c  */
     5801#line 601 "parser.yy"
    56665802    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    56675803    break;
    56685804
    5669   case 116:
    5670 
    5671 /* Line 1806 of yacc.c  */
    5672 #line 605 "parser.yy"
     5805  case 117:
     5806
     5807/* Line 1806 of yacc.c  */
     5808#line 607 "parser.yy"
    56735809    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    56745810    break;
    56755811
    5676   case 117:
    5677 
    5678 /* Line 1806 of yacc.c  */
    5679 #line 609 "parser.yy"
     5812  case 118:
     5813
     5814/* Line 1806 of yacc.c  */
     5815#line 611 "parser.yy"
    56805816    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    56815817    break;
    56825818
    5683   case 118:
    5684 
    5685 /* Line 1806 of yacc.c  */
    5686 #line 610 "parser.yy"
     5819  case 119:
     5820
     5821/* Line 1806 of yacc.c  */
     5822#line 612 "parser.yy"
    56875823    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    56885824    break;
    56895825
    5690   case 119:
    5691 
    5692 /* Line 1806 of yacc.c  */
    5693 #line 611 "parser.yy"
     5826  case 120:
     5827
     5828/* Line 1806 of yacc.c  */
     5829#line 613 "parser.yy"
    56945830    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    56955831    break;
    56965832
    5697   case 120:
    5698 
    5699 /* Line 1806 of yacc.c  */
    5700 #line 612 "parser.yy"
     5833  case 121:
     5834
     5835/* Line 1806 of yacc.c  */
     5836#line 614 "parser.yy"
    57015837    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    57025838    break;
    57035839
    5704   case 121:
    5705 
    5706 /* Line 1806 of yacc.c  */
    5707 #line 613 "parser.yy"
     5840  case 122:
     5841
     5842/* Line 1806 of yacc.c  */
     5843#line 615 "parser.yy"
    57085844    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    57095845    break;
    57105846
    5711   case 122:
    5712 
    5713 /* Line 1806 of yacc.c  */
    5714 #line 614 "parser.yy"
     5847  case 123:
     5848
     5849/* Line 1806 of yacc.c  */
     5850#line 616 "parser.yy"
    57155851    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    57165852    break;
    57175853
    5718   case 123:
    5719 
    5720 /* Line 1806 of yacc.c  */
    5721 #line 615 "parser.yy"
     5854  case 124:
     5855
     5856/* Line 1806 of yacc.c  */
     5857#line 617 "parser.yy"
    57225858    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    57235859    break;
    57245860
    5725   case 124:
    5726 
    5727 /* Line 1806 of yacc.c  */
    5728 #line 616 "parser.yy"
     5861  case 125:
     5862
     5863/* Line 1806 of yacc.c  */
     5864#line 618 "parser.yy"
    57295865    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    57305866    break;
    57315867
    5732   case 125:
    5733 
    5734 /* Line 1806 of yacc.c  */
    5735 #line 617 "parser.yy"
     5868  case 126:
     5869
     5870/* Line 1806 of yacc.c  */
     5871#line 619 "parser.yy"
    57365872    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    57375873    break;
    57385874
    5739   case 126:
    5740 
    5741 /* Line 1806 of yacc.c  */
    5742 #line 618 "parser.yy"
     5875  case 127:
     5876
     5877/* Line 1806 of yacc.c  */
     5878#line 620 "parser.yy"
    57435879    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    57445880    break;
    57455881
    5746   case 128:
    5747 
    5748 /* Line 1806 of yacc.c  */
    5749 #line 624 "parser.yy"
     5882  case 129:
     5883
     5884/* Line 1806 of yacc.c  */
     5885#line 626 "parser.yy"
    57505886    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57515887    break;
    57525888
    5753   case 129:
    5754 
    5755 /* Line 1806 of yacc.c  */
    5756 #line 629 "parser.yy"
     5889  case 130:
     5890
     5891/* Line 1806 of yacc.c  */
     5892#line 631 "parser.yy"
    57575893    { (yyval.en) = 0; }
    57585894    break;
    57595895
    5760   case 133:
    5761 
    5762 /* Line 1806 of yacc.c  */
    5763 #line 638 "parser.yy"
     5896  case 134:
     5897
     5898/* Line 1806 of yacc.c  */
     5899#line 640 "parser.yy"
    57645900    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    57655901    break;
    57665902
    5767   case 139:
    5768 
    5769 /* Line 1806 of yacc.c  */
    5770 #line 645 "parser.yy"
     5903  case 140:
     5904
     5905/* Line 1806 of yacc.c  */
     5906#line 647 "parser.yy"
    57715907    {
    57725908                        Token fn; fn.str = new std::string( "^?{}" ); // location undefined
    57735909                        (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
    5774                                 (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), (yyvsp[(2) - (6)].en) ))->set_link( (yyvsp[(4) - (6)].en) ) ), 0 );
     5910                                (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ), 0 );
    57755911                }
    57765912    break;
    57775913
    5778   case 140:
    5779 
    5780 /* Line 1806 of yacc.c  */
    5781 #line 654 "parser.yy"
     5914  case 141:
     5915
     5916/* Line 1806 of yacc.c  */
     5917#line 657 "parser.yy"
    57825918    {
    57835919                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    57855921    break;
    57865922
    5787   case 141:
    5788 
    5789 /* Line 1806 of yacc.c  */
    5790 #line 661 "parser.yy"
     5923  case 142:
     5924
     5925/* Line 1806 of yacc.c  */
     5926#line 664 "parser.yy"
    57915927    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    57925928    break;
    57935929
    5794   case 142:
    5795 
    5796 /* Line 1806 of yacc.c  */
    5797 #line 668 "parser.yy"
     5930  case 143:
     5931
     5932/* Line 1806 of yacc.c  */
     5933#line 671 "parser.yy"
    57985934    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    57995935    break;
    58005936
    5801   case 144:
    5802 
    5803 /* Line 1806 of yacc.c  */
    5804 #line 674 "parser.yy"
     5937  case 145:
     5938
     5939/* Line 1806 of yacc.c  */
     5940#line 677 "parser.yy"
    58055941    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    58065942    break;
    58075943
    5808   case 145:
    5809 
    5810 /* Line 1806 of yacc.c  */
    5811 #line 679 "parser.yy"
     5944  case 146:
     5945
     5946/* Line 1806 of yacc.c  */
     5947#line 682 "parser.yy"
    58125948    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    58135949    break;
    58145950
    5815   case 146:
    5816 
    5817 /* Line 1806 of yacc.c  */
    5818 #line 681 "parser.yy"
    5819     { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    5820     break;
    5821 
    58225951  case 147:
    58235952
    58245953/* Line 1806 of yacc.c  */
    5825 #line 683 "parser.yy"
     5954#line 684 "parser.yy"
     5955    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) )/*->set_extension( true )*/; }
     5956    break;
     5957
     5958  case 148:
     5959
     5960/* Line 1806 of yacc.c  */
     5961#line 686 "parser.yy"
    58265962    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    58275963    break;
    58285964
    5829   case 150:
    5830 
    5831 /* Line 1806 of yacc.c  */
    5832 #line 690 "parser.yy"
     5965  case 151:
     5966
     5967/* Line 1806 of yacc.c  */
     5968#line 693 "parser.yy"
    58335969    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    58345970    break;
    58355971
    5836   case 151:
    5837 
    5838 /* Line 1806 of yacc.c  */
    5839 #line 695 "parser.yy"
     5972  case 152:
     5973
     5974/* Line 1806 of yacc.c  */
     5975#line 698 "parser.yy"
    58405976    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    58415977    break;
    58425978
    5843   case 152:
    5844 
    5845 /* Line 1806 of yacc.c  */
    5846 #line 701 "parser.yy"
     5979  case 153:
     5980
     5981/* Line 1806 of yacc.c  */
     5982#line 704 "parser.yy"
    58475983    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    58485984    break;
    58495985
    5850   case 153:
    5851 
    5852 /* Line 1806 of yacc.c  */
    5853 #line 703 "parser.yy"
     5986  case 154:
     5987
     5988/* Line 1806 of yacc.c  */
     5989#line 706 "parser.yy"
    58545990    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    58555991    break;
    58565992
    5857   case 154:
    5858 
    5859 /* Line 1806 of yacc.c  */
    5860 #line 705 "parser.yy"
     5993  case 155:
     5994
     5995/* Line 1806 of yacc.c  */
     5996#line 708 "parser.yy"
    58615997    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    58625998    break;
    58635999
    5864   case 155:
    5865 
    5866 /* Line 1806 of yacc.c  */
    5867 #line 707 "parser.yy"
     6000  case 156:
     6001
     6002/* Line 1806 of yacc.c  */
     6003#line 710 "parser.yy"
    58686004    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
    58696005    break;
    58706006
    5871   case 156:
    5872 
    5873 /* Line 1806 of yacc.c  */
    5874 #line 712 "parser.yy"
     6007  case 157:
     6008
     6009/* Line 1806 of yacc.c  */
     6010#line 715 "parser.yy"
    58756011    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    58766012    break;
    58776013
    5878   case 157:
    5879 
    5880 /* Line 1806 of yacc.c  */
    5881 #line 714 "parser.yy"
     6014  case 158:
     6015
     6016/* Line 1806 of yacc.c  */
     6017#line 717 "parser.yy"
    58826018    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    58836019    break;
    58846020
    5885   case 158:
    5886 
    5887 /* Line 1806 of yacc.c  */
    5888 #line 721 "parser.yy"
     6021  case 159:
     6022
     6023/* Line 1806 of yacc.c  */
     6024#line 724 "parser.yy"
    58896025    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    58906026    break;
    58916027
    5892   case 159:
    5893 
    5894 /* Line 1806 of yacc.c  */
    5895 #line 723 "parser.yy"
     6028  case 160:
     6029
     6030/* Line 1806 of yacc.c  */
     6031#line 726 "parser.yy"
    58966032    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    58976033    break;
    58986034
    5899   case 162:
    5900 
    5901 /* Line 1806 of yacc.c  */
    5902 #line 730 "parser.yy"
     6035  case 163:
     6036
     6037/* Line 1806 of yacc.c  */
     6038#line 733 "parser.yy"
    59036039    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
    59046040    break;
    59056041
    5906   case 163:
    5907 
    5908 /* Line 1806 of yacc.c  */
    5909 #line 734 "parser.yy"
     6042  case 164:
     6043
     6044/* Line 1806 of yacc.c  */
     6045#line 737 "parser.yy"
    59106046    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    59116047    break;
    59126048
    5913   case 164:
    5914 
    5915 /* Line 1806 of yacc.c  */
    5916 #line 735 "parser.yy"
     6049  case 165:
     6050
     6051/* Line 1806 of yacc.c  */
     6052#line 738 "parser.yy"
    59176053    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    59186054    break;
    59196055
    5920   case 166:
    5921 
    5922 /* Line 1806 of yacc.c  */
    5923 #line 741 "parser.yy"
     6056  case 167:
     6057
     6058/* Line 1806 of yacc.c  */
     6059#line 744 "parser.yy"
    59246060    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    59256061    break;
    59266062
    5927   case 167:
    5928 
    5929 /* Line 1806 of yacc.c  */
    5930 #line 745 "parser.yy"
     6063  case 168:
     6064
     6065/* Line 1806 of yacc.c  */
     6066#line 748 "parser.yy"
    59316067    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    59326068    break;
    59336069
    5934   case 168:
    5935 
    5936 /* Line 1806 of yacc.c  */
    5937 #line 750 "parser.yy"
     6070  case 169:
     6071
     6072/* Line 1806 of yacc.c  */
     6073#line 753 "parser.yy"
    59386074    { (yyval.sn) = 0; }
    59396075    break;
    59406076
    5941   case 170:
    5942 
    5943 /* Line 1806 of yacc.c  */
    5944 #line 756 "parser.yy"
     6077  case 171:
     6078
     6079/* Line 1806 of yacc.c  */
     6080#line 759 "parser.yy"
    59456081    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    59466082    break;
    59476083
    5948   case 171:
    5949 
    5950 /* Line 1806 of yacc.c  */
    5951 #line 758 "parser.yy"
     6084  case 172:
     6085
     6086/* Line 1806 of yacc.c  */
     6087#line 761 "parser.yy"
    59526088    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    59536089    break;
    59546090
    5955   case 172:
    5956 
    5957 /* Line 1806 of yacc.c  */
    5958 #line 763 "parser.yy"
     6091  case 173:
     6092
     6093/* Line 1806 of yacc.c  */
     6094#line 766 "parser.yy"
    59596095    { (yyval.sn) = 0; }
    59606096    break;
    59616097
    5962   case 174:
    5963 
    5964 /* Line 1806 of yacc.c  */
    5965 #line 769 "parser.yy"
     6098  case 175:
     6099
     6100/* Line 1806 of yacc.c  */
     6101#line 772 "parser.yy"
    59666102    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    59676103    break;
    59686104
    5969   case 175:
    5970 
    5971 /* Line 1806 of yacc.c  */
    5972 #line 771 "parser.yy"
     6105  case 176:
     6106
     6107/* Line 1806 of yacc.c  */
     6108#line 774 "parser.yy"
    59736109    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
    59746110    break;
    59756111
    5976   case 176:
    5977 
    5978 /* Line 1806 of yacc.c  */
    5979 #line 773 "parser.yy"
     6112  case 177:
     6113
     6114/* Line 1806 of yacc.c  */
     6115#line 776 "parser.yy"
    59806116    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    59816117    break;
    59826118
    5983   case 177:
    5984 
    5985 /* Line 1806 of yacc.c  */
    5986 #line 775 "parser.yy"
     6119  case 178:
     6120
     6121/* Line 1806 of yacc.c  */
     6122#line 778 "parser.yy"
    59876123    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
    59886124    break;
    59896125
    5990   case 178:
    5991 
    5992 /* Line 1806 of yacc.c  */
    5993 #line 780 "parser.yy"
     6126  case 179:
     6127
     6128/* Line 1806 of yacc.c  */
     6129#line 783 "parser.yy"
    59946130    { (yyval.sn) = 0; }
    59956131    break;
    59966132
    5997   case 180:
    5998 
    5999 /* Line 1806 of yacc.c  */
    6000 #line 785 "parser.yy"
     6133  case 181:
     6134
     6135/* Line 1806 of yacc.c  */
     6136#line 788 "parser.yy"
    60016137    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    60026138    break;
    60036139
    6004   case 181:
    6005 
    6006 /* Line 1806 of yacc.c  */
    6007 #line 786 "parser.yy"
     6140  case 182:
     6141
     6142/* Line 1806 of yacc.c  */
     6143#line 789 "parser.yy"
    60086144    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    60096145    break;
    60106146
    6011   case 182:
    6012 
    6013 /* Line 1806 of yacc.c  */
    6014 #line 791 "parser.yy"
     6147  case 183:
     6148
     6149/* Line 1806 of yacc.c  */
     6150#line 794 "parser.yy"
    60156151    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    60166152    break;
    60176153
    6018   case 183:
    6019 
    6020 /* Line 1806 of yacc.c  */
    6021 #line 793 "parser.yy"
     6154  case 184:
     6155
     6156/* Line 1806 of yacc.c  */
     6157#line 796 "parser.yy"
    60226158    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    60236159    break;
    60246160
    6025   case 184:
    6026 
    6027 /* Line 1806 of yacc.c  */
    6028 #line 795 "parser.yy"
     6161  case 185:
     6162
     6163/* Line 1806 of yacc.c  */
     6164#line 798 "parser.yy"
    60296165    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    60306166    break;
    60316167
    6032   case 185:
    6033 
    6034 /* Line 1806 of yacc.c  */
    6035 #line 800 "parser.yy"
     6168  case 186:
     6169
     6170/* Line 1806 of yacc.c  */
     6171#line 803 "parser.yy"
    60366172    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    60376173    break;
    60386174
    6039   case 186:
    6040 
    6041 /* Line 1806 of yacc.c  */
    6042 #line 802 "parser.yy"
     6175  case 187:
     6176
     6177/* Line 1806 of yacc.c  */
     6178#line 805 "parser.yy"
    60436179    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    60446180    break;
    60456181
    6046   case 187:
    6047 
    6048 /* Line 1806 of yacc.c  */
    6049 #line 807 "parser.yy"
     6182  case 188:
     6183
     6184/* Line 1806 of yacc.c  */
     6185#line 810 "parser.yy"
    60506186    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    60516187    break;
    60526188
    6053   case 188:
    6054 
    6055 /* Line 1806 of yacc.c  */
    6056 #line 811 "parser.yy"
     6189  case 189:
     6190
     6191/* Line 1806 of yacc.c  */
     6192#line 814 "parser.yy"
    60576193    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    60586194    break;
    60596195
    6060   case 189:
    6061 
    6062 /* Line 1806 of yacc.c  */
    6063 #line 814 "parser.yy"
     6196  case 190:
     6197
     6198/* Line 1806 of yacc.c  */
     6199#line 817 "parser.yy"
    60646200    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    60656201    break;
    60666202
    6067   case 190:
    6068 
    6069 /* Line 1806 of yacc.c  */
    6070 #line 818 "parser.yy"
     6203  case 191:
     6204
     6205/* Line 1806 of yacc.c  */
     6206#line 821 "parser.yy"
    60716207    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    60726208    break;
    60736209
    6074   case 191:
    6075 
    6076 /* Line 1806 of yacc.c  */
    6077 #line 821 "parser.yy"
     6210  case 192:
     6211
     6212/* Line 1806 of yacc.c  */
     6213#line 824 "parser.yy"
    60786214    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    60796215    break;
    60806216
    6081   case 192:
    6082 
    6083 /* Line 1806 of yacc.c  */
    6084 #line 825 "parser.yy"
     6217  case 193:
     6218
     6219/* Line 1806 of yacc.c  */
     6220#line 828 "parser.yy"
    60856221    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    60866222    break;
    60876223
    6088   case 193:
    6089 
    6090 /* Line 1806 of yacc.c  */
    6091 #line 827 "parser.yy"
     6224  case 194:
     6225
     6226/* Line 1806 of yacc.c  */
     6227#line 830 "parser.yy"
    60926228    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    60936229    break;
    60946230
    6095   case 194:
    6096 
    6097 /* Line 1806 of yacc.c  */
    6098 #line 829 "parser.yy"
     6231  case 195:
     6232
     6233/* Line 1806 of yacc.c  */
     6234#line 832 "parser.yy"
    60996235    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    61006236    break;
    61016237
    6102   case 195:
    6103 
    6104 /* Line 1806 of yacc.c  */
    6105 #line 833 "parser.yy"
     6238  case 196:
     6239
     6240/* Line 1806 of yacc.c  */
     6241#line 836 "parser.yy"
    61066242    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    61076243    break;
    61086244
    6109   case 196:
    6110 
    6111 /* Line 1806 of yacc.c  */
    6112 #line 835 "parser.yy"
     6245  case 197:
     6246
     6247/* Line 1806 of yacc.c  */
     6248#line 838 "parser.yy"
    61136249    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
    61146250    break;
    61156251
    6116   case 197:
    6117 
    6118 /* Line 1806 of yacc.c  */
    6119 #line 842 "parser.yy"
     6252  case 198:
     6253
     6254/* Line 1806 of yacc.c  */
     6255#line 845 "parser.yy"
    61206256    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    61216257    break;
    61226258
    6123   case 198:
    6124 
    6125 /* Line 1806 of yacc.c  */
    6126 #line 844 "parser.yy"
     6259  case 199:
     6260
     6261/* Line 1806 of yacc.c  */
     6262#line 847 "parser.yy"
    61276263    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    61286264    break;
    61296265
    6130   case 199:
    6131 
    6132 /* Line 1806 of yacc.c  */
    6133 #line 846 "parser.yy"
     6266  case 200:
     6267
     6268/* Line 1806 of yacc.c  */
     6269#line 849 "parser.yy"
    61346270    {
    61356271                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    61386274    break;
    61396275
    6140   case 201:
    6141 
    6142 /* Line 1806 of yacc.c  */
    6143 #line 857 "parser.yy"
     6276  case 202:
     6277
     6278/* Line 1806 of yacc.c  */
     6279#line 860 "parser.yy"
    61446280    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    61456281    break;
    61466282
    6147   case 202:
    6148 
    6149 /* Line 1806 of yacc.c  */
    6150 #line 859 "parser.yy"
     6283  case 203:
     6284
     6285/* Line 1806 of yacc.c  */
     6286#line 862 "parser.yy"
    61516287    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    61526288    break;
    61536289
    6154   case 203:
    6155 
    6156 /* Line 1806 of yacc.c  */
    6157 #line 861 "parser.yy"
     6290  case 204:
     6291
     6292/* Line 1806 of yacc.c  */
     6293#line 864 "parser.yy"
    61586294    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    61596295    break;
    61606296
    6161   case 204:
    6162 
    6163 /* Line 1806 of yacc.c  */
    6164 #line 863 "parser.yy"
     6297  case 205:
     6298
     6299/* Line 1806 of yacc.c  */
     6300#line 866 "parser.yy"
    61656301    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    61666302    break;
    61676303
    6168   case 205:
    6169 
    6170 /* Line 1806 of yacc.c  */
    6171 #line 868 "parser.yy"
     6304  case 206:
     6305
     6306/* Line 1806 of yacc.c  */
     6307#line 871 "parser.yy"
    61726308    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    61736309    break;
    61746310
    6175   case 206:
    6176 
    6177 /* Line 1806 of yacc.c  */
    6178 #line 870 "parser.yy"
     6311  case 207:
     6312
     6313/* Line 1806 of yacc.c  */
     6314#line 873 "parser.yy"
    61796315    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    61806316    break;
    61816317
    6182   case 207:
    6183 
    6184 /* Line 1806 of yacc.c  */
    6185 #line 872 "parser.yy"
     6318  case 208:
     6319
     6320/* Line 1806 of yacc.c  */
     6321#line 875 "parser.yy"
    61866322    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    61876323    break;
    61886324
    6189   case 208:
    6190 
    6191 /* Line 1806 of yacc.c  */
    6192 #line 874 "parser.yy"
     6325  case 209:
     6326
     6327/* Line 1806 of yacc.c  */
     6328#line 877 "parser.yy"
    61936329    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    61946330    break;
    61956331
    6196   case 209:
    6197 
    6198 /* Line 1806 of yacc.c  */
    6199 #line 879 "parser.yy"
     6332  case 210:
     6333
     6334/* Line 1806 of yacc.c  */
     6335#line 882 "parser.yy"
    62006336    {
    62016337                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    62046340    break;
    62056341
    6206   case 211:
    6207 
    6208 /* Line 1806 of yacc.c  */
    6209 #line 893 "parser.yy"
     6342  case 212:
     6343
     6344/* Line 1806 of yacc.c  */
     6345#line 896 "parser.yy"
    62106346    {
    62116347                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62146350    break;
    62156351
    6216   case 212:
    6217 
    6218 /* Line 1806 of yacc.c  */
    6219 #line 898 "parser.yy"
     6352  case 213:
     6353
     6354/* Line 1806 of yacc.c  */
     6355#line 901 "parser.yy"
    62206356    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    62216357    break;
    62226358
    6223   case 213:
    6224 
    6225 /* Line 1806 of yacc.c  */
    6226 #line 900 "parser.yy"
     6359  case 214:
     6360
     6361/* Line 1806 of yacc.c  */
     6362#line 903 "parser.yy"
    62276363    {
    62286364                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62316367    break;
    62326368
    6233   case 215:
    6234 
    6235 /* Line 1806 of yacc.c  */
    6236 #line 909 "parser.yy"
     6369  case 216:
     6370
     6371/* Line 1806 of yacc.c  */
     6372#line 912 "parser.yy"
    62376373    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    62386374    break;
    62396375
    6240   case 216:
    6241 
    6242 /* Line 1806 of yacc.c  */
    6243 #line 911 "parser.yy"
     6376  case 217:
     6377
     6378/* Line 1806 of yacc.c  */
     6379#line 914 "parser.yy"
    62446380    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    62456381    break;
    62466382
    6247   case 217:
    6248 
    6249 /* Line 1806 of yacc.c  */
    6250 #line 913 "parser.yy"
     6383  case 218:
     6384
     6385/* Line 1806 of yacc.c  */
     6386#line 916 "parser.yy"
    62516387    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    62526388    break;
    62536389
    6254   case 218:
    6255 
    6256 /* Line 1806 of yacc.c  */
    6257 #line 915 "parser.yy"
     6390  case 219:
     6391
     6392/* Line 1806 of yacc.c  */
     6393#line 918 "parser.yy"
    62586394    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
    62596395    break;
    62606396
    6261   case 219:
    6262 
    6263 /* Line 1806 of yacc.c  */
    6264 #line 917 "parser.yy"
     6397  case 220:
     6398
     6399/* Line 1806 of yacc.c  */
     6400#line 920 "parser.yy"
    62656401    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
    62666402    break;
    62676403
    6268   case 220:
    6269 
    6270 /* Line 1806 of yacc.c  */
    6271 #line 922 "parser.yy"
     6404  case 221:
     6405
     6406/* Line 1806 of yacc.c  */
     6407#line 925 "parser.yy"
    62726408    { (yyval.flag) = false; }
    62736409    break;
    62746410
    6275   case 221:
    6276 
    6277 /* Line 1806 of yacc.c  */
    6278 #line 924 "parser.yy"
     6411  case 222:
     6412
     6413/* Line 1806 of yacc.c  */
     6414#line 927 "parser.yy"
    62796415    { (yyval.flag) = true; }
    62806416    break;
    62816417
    6282   case 222:
    6283 
    6284 /* Line 1806 of yacc.c  */
    6285 #line 929 "parser.yy"
     6418  case 223:
     6419
     6420/* Line 1806 of yacc.c  */
     6421#line 932 "parser.yy"
    62866422    { (yyval.en) = 0; }
    62876423    break;
    62886424
    6289   case 225:
    6290 
    6291 /* Line 1806 of yacc.c  */
    6292 #line 936 "parser.yy"
     6425  case 226:
     6426
     6427/* Line 1806 of yacc.c  */
     6428#line 939 "parser.yy"
    62936429    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    62946430    break;
    62956431
    6296   case 226:
    6297 
    6298 /* Line 1806 of yacc.c  */
    6299 #line 941 "parser.yy"
     6432  case 227:
     6433
     6434/* Line 1806 of yacc.c  */
     6435#line 944 "parser.yy"
    63006436    { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
    63016437    break;
    63026438
    6303   case 227:
    6304 
    6305 /* Line 1806 of yacc.c  */
    6306 #line 943 "parser.yy"
     6439  case 228:
     6440
     6441/* Line 1806 of yacc.c  */
     6442#line 946 "parser.yy"
    63076443    { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
    63086444    break;
    63096445
    6310   case 228:
    6311 
    6312 /* Line 1806 of yacc.c  */
    6313 #line 948 "parser.yy"
     6446  case 229:
     6447
     6448/* Line 1806 of yacc.c  */
     6449#line 951 "parser.yy"
    63146450    { (yyval.constant) = 0; }
    63156451    break;
    63166452
    6317   case 229:
    6318 
    6319 /* Line 1806 of yacc.c  */
    6320 #line 950 "parser.yy"
     6453  case 230:
     6454
     6455/* Line 1806 of yacc.c  */
     6456#line 953 "parser.yy"
    63216457    { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
    63226458    break;
    63236459
    6324   case 230:
    6325 
    6326 /* Line 1806 of yacc.c  */
    6327 #line 952 "parser.yy"
     6460  case 231:
     6461
     6462/* Line 1806 of yacc.c  */
     6463#line 955 "parser.yy"
    63286464    { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    63296465    break;
    63306466
    6331   case 231:
    6332 
    6333 /* Line 1806 of yacc.c  */
    6334 #line 957 "parser.yy"
     6467  case 232:
     6468
     6469/* Line 1806 of yacc.c  */
     6470#line 960 "parser.yy"
    63356471    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    63366472    break;
    63376473
    6338   case 232:
    6339 
    6340 /* Line 1806 of yacc.c  */
    6341 #line 959 "parser.yy"
     6474  case 233:
     6475
     6476/* Line 1806 of yacc.c  */
     6477#line 962 "parser.yy"
    63426478    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    63436479    break;
    63446480
    6345   case 233:
    6346 
    6347 /* Line 1806 of yacc.c  */
    6348 #line 966 "parser.yy"
     6481  case 234:
     6482
     6483/* Line 1806 of yacc.c  */
     6484#line 969 "parser.yy"
    63496485    { (yyval.decl) = 0; }
    63506486    break;
    63516487
    6352   case 236:
    6353 
    6354 /* Line 1806 of yacc.c  */
    6355 #line 973 "parser.yy"
     6488  case 237:
     6489
     6490/* Line 1806 of yacc.c  */
     6491#line 976 "parser.yy"
    63566492    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    63576493    break;
    63586494
    6359   case 237:
    6360 
    6361 /* Line 1806 of yacc.c  */
    6362 #line 978 "parser.yy"
     6495  case 238:
     6496
     6497/* Line 1806 of yacc.c  */
     6498#line 981 "parser.yy"
    63636499    { (yyval.decl) = 0; }
    63646500    break;
    63656501
    6366   case 240:
    6367 
    6368 /* Line 1806 of yacc.c  */
    6369 #line 985 "parser.yy"
     6502  case 241:
     6503
     6504/* Line 1806 of yacc.c  */
     6505#line 988 "parser.yy"
    63706506    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    63716507    break;
    63726508
    6373   case 245:
    6374 
    6375 /* Line 1806 of yacc.c  */
    6376 #line 999 "parser.yy"
     6509  case 246:
     6510
     6511/* Line 1806 of yacc.c  */
     6512#line 1002 "parser.yy"
    63776513    {}
    63786514    break;
    63796515
    6380   case 246:
    6381 
    6382 /* Line 1806 of yacc.c  */
    6383 #line 1000 "parser.yy"
     6516  case 247:
     6517
     6518/* Line 1806 of yacc.c  */
     6519#line 1003 "parser.yy"
    63846520    {}
    63856521    break;
    63866522
    6387   case 254:
    6388 
    6389 /* Line 1806 of yacc.c  */
    6390 #line 1029 "parser.yy"
     6523  case 255:
     6524
     6525/* Line 1806 of yacc.c  */
     6526#line 1032 "parser.yy"
    63916527    {
    63926528                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63956531    break;
    63966532
    6397   case 255:
    6398 
    6399 /* Line 1806 of yacc.c  */
    6400 #line 1036 "parser.yy"
     6533  case 256:
     6534
     6535/* Line 1806 of yacc.c  */
     6536#line 1039 "parser.yy"
    64016537    {
    64026538                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64056541    break;
    64066542
    6407   case 256:
    6408 
    6409 /* Line 1806 of yacc.c  */
    6410 #line 1041 "parser.yy"
     6543  case 257:
     6544
     6545/* Line 1806 of yacc.c  */
     6546#line 1044 "parser.yy"
    64116547    {
    64126548                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    64156551    break;
    64166552
    6417   case 257:
    6418 
    6419 /* Line 1806 of yacc.c  */
    6420 #line 1051 "parser.yy"
     6553  case 258:
     6554
     6555/* Line 1806 of yacc.c  */
     6556#line 1054 "parser.yy"
    64216557    {
    64226558                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    64256561    break;
    64266562
    6427   case 258:
    6428 
    6429 /* Line 1806 of yacc.c  */
    6430 #line 1056 "parser.yy"
     6563  case 259:
     6564
     6565/* Line 1806 of yacc.c  */
     6566#line 1059 "parser.yy"
    64316567    {
    64326568                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    64356571    break;
    64366572
    6437   case 259:
    6438 
    6439 /* Line 1806 of yacc.c  */
    6440 #line 1061 "parser.yy"
     6573  case 260:
     6574
     6575/* Line 1806 of yacc.c  */
     6576#line 1064 "parser.yy"
    64416577    {
    64426578                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    64456581    break;
    64466582
    6447   case 260:
    6448 
    6449 /* Line 1806 of yacc.c  */
    6450 #line 1069 "parser.yy"
     6583  case 261:
     6584
     6585/* Line 1806 of yacc.c  */
     6586#line 1072 "parser.yy"
    64516587    {
    64526588                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64556591    break;
    64566592
    6457   case 261:
    6458 
    6459 /* Line 1806 of yacc.c  */
    6460 #line 1074 "parser.yy"
     6593  case 262:
     6594
     6595/* Line 1806 of yacc.c  */
     6596#line 1077 "parser.yy"
    64616597    {
    64626598                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64656601    break;
    64666602
    6467   case 262:
    6468 
    6469 /* Line 1806 of yacc.c  */
    6470 #line 1079 "parser.yy"
     6603  case 263:
     6604
     6605/* Line 1806 of yacc.c  */
     6606#line 1082 "parser.yy"
    64716607    {
    64726608                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64756611    break;
    64766612
    6477   case 263:
    6478 
    6479 /* Line 1806 of yacc.c  */
    6480 #line 1084 "parser.yy"
     6613  case 264:
     6614
     6615/* Line 1806 of yacc.c  */
     6616#line 1087 "parser.yy"
    64816617    {
    64826618                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64856621    break;
    64866622
    6487   case 264:
    6488 
    6489 /* Line 1806 of yacc.c  */
    6490 #line 1089 "parser.yy"
     6623  case 265:
     6624
     6625/* Line 1806 of yacc.c  */
     6626#line 1092 "parser.yy"
    64916627    {
    64926628                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64956631    break;
    64966632
    6497   case 265:
    6498 
    6499 /* Line 1806 of yacc.c  */
    6500 #line 1097 "parser.yy"
     6633  case 266:
     6634
     6635/* Line 1806 of yacc.c  */
     6636#line 1100 "parser.yy"
    65016637    {
    65026638                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    65046640    break;
    65056641
    6506   case 266:
    6507 
    6508 /* Line 1806 of yacc.c  */
    6509 #line 1120 "parser.yy"
     6642  case 267:
     6643
     6644/* Line 1806 of yacc.c  */
     6645#line 1123 "parser.yy"
    65106646    {
    65116647                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    65136649    break;
    65146650
    6515   case 267:
    6516 
    6517 /* Line 1806 of yacc.c  */
    6518 #line 1124 "parser.yy"
     6651  case 268:
     6652
     6653/* Line 1806 of yacc.c  */
     6654#line 1127 "parser.yy"
    65196655    {
    65206656                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    65226658    break;
    65236659
    6524   case 268:
    6525 
    6526 /* Line 1806 of yacc.c  */
    6527 #line 1131 "parser.yy"
     6660  case 269:
     6661
     6662/* Line 1806 of yacc.c  */
     6663#line 1134 "parser.yy"
    65286664    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    65296665    break;
    65306666
    6531   case 269:
    6532 
    6533 /* Line 1806 of yacc.c  */
    6534 #line 1135 "parser.yy"
     6667  case 270:
     6668
     6669/* Line 1806 of yacc.c  */
     6670#line 1138 "parser.yy"
    65356671    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    65366672    break;
    65376673
    6538   case 270:
    6539 
    6540 /* Line 1806 of yacc.c  */
    6541 #line 1140 "parser.yy"
     6674  case 271:
     6675
     6676/* Line 1806 of yacc.c  */
     6677#line 1143 "parser.yy"
    65426678    {
    65436679                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65466682    break;
    65476683
    6548   case 271:
    6549 
    6550 /* Line 1806 of yacc.c  */
    6551 #line 1145 "parser.yy"
     6684  case 272:
     6685
     6686/* Line 1806 of yacc.c  */
     6687#line 1148 "parser.yy"
    65526688    {
    65536689                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65566692    break;
    65576693
    6558   case 272:
    6559 
    6560 /* Line 1806 of yacc.c  */
    6561 #line 1150 "parser.yy"
     6694  case 273:
     6695
     6696/* Line 1806 of yacc.c  */
     6697#line 1153 "parser.yy"
    65626698    {
    65636699                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    65666702    break;
    65676703
    6568   case 273:
    6569 
    6570 /* Line 1806 of yacc.c  */
    6571 #line 1161 "parser.yy"
     6704  case 274:
     6705
     6706/* Line 1806 of yacc.c  */
     6707#line 1164 "parser.yy"
    65726708    {
    65736709                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65766712    break;
    65776713
    6578   case 274:
    6579 
    6580 /* Line 1806 of yacc.c  */
    6581 #line 1166 "parser.yy"
     6714  case 275:
     6715
     6716/* Line 1806 of yacc.c  */
     6717#line 1169 "parser.yy"
    65826718    {
    65836719                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65866722    break;
    65876723
    6588   case 275:
    6589 
    6590 /* Line 1806 of yacc.c  */
    6591 #line 1171 "parser.yy"
     6724  case 276:
     6725
     6726/* Line 1806 of yacc.c  */
     6727#line 1174 "parser.yy"
    65926728    {
    65936729                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65966732    break;
    65976733
    6598   case 276:
    6599 
    6600 /* Line 1806 of yacc.c  */
    6601 #line 1176 "parser.yy"
     6734  case 277:
     6735
     6736/* Line 1806 of yacc.c  */
     6737#line 1179 "parser.yy"
    66026738    {
    66036739                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    66066742    break;
    66076743
    6608   case 277:
    6609 
    6610 /* Line 1806 of yacc.c  */
    6611 #line 1181 "parser.yy"
     6744  case 278:
     6745
     6746/* Line 1806 of yacc.c  */
     6747#line 1184 "parser.yy"
    66126748    {
    66136749                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    66166752    break;
    66176753
    6618   case 278:
    6619 
    6620 /* Line 1806 of yacc.c  */
    6621 #line 1190 "parser.yy"
     6754  case 279:
     6755
     6756/* Line 1806 of yacc.c  */
     6757#line 1193 "parser.yy"
    66226758    {
    66236759                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    66266762    break;
    66276763
    6628   case 279:
    6629 
    6630 /* Line 1806 of yacc.c  */
    6631 #line 1195 "parser.yy"
     6764  case 280:
     6765
     6766/* Line 1806 of yacc.c  */
     6767#line 1198 "parser.yy"
    66326768    {
    66336769                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    66366772    break;
    66376773
    6638   case 284:
    6639 
    6640 /* Line 1806 of yacc.c  */
    6641 #line 1212 "parser.yy"
     6774  case 285:
     6775
     6776/* Line 1806 of yacc.c  */
     6777#line 1215 "parser.yy"
    66426778    {
    66436779                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66466782    break;
    66476783
    6648   case 285:
    6649 
    6650 /* Line 1806 of yacc.c  */
    6651 #line 1217 "parser.yy"
     6784  case 286:
     6785
     6786/* Line 1806 of yacc.c  */
     6787#line 1220 "parser.yy"
    66526788    {
    66536789                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66566792    break;
    66576793
    6658   case 294:
    6659 
    6660 /* Line 1806 of yacc.c  */
    6661 #line 1239 "parser.yy"
     6794  case 295:
     6795
     6796/* Line 1806 of yacc.c  */
     6797#line 1242 "parser.yy"
    66626798    { (yyval.decl) = 0; }
    66636799    break;
    66646800
    6665   case 297:
    6666 
    6667 /* Line 1806 of yacc.c  */
    6668 #line 1251 "parser.yy"
     6801  case 298:
     6802
     6803/* Line 1806 of yacc.c  */
     6804#line 1254 "parser.yy"
    66696805    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66706806    break;
    66716807
    6672   case 300:
    6673 
    6674 /* Line 1806 of yacc.c  */
    6675 #line 1262 "parser.yy"
     6808  case 301:
     6809
     6810/* Line 1806 of yacc.c  */
     6811#line 1265 "parser.yy"
    66766812    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    66776813    break;
    66786814
    6679   case 301:
    6680 
    6681 /* Line 1806 of yacc.c  */
    6682 #line 1264 "parser.yy"
     6815  case 302:
     6816
     6817/* Line 1806 of yacc.c  */
     6818#line 1267 "parser.yy"
    66836819    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    66846820    break;
    66856821
    6686   case 302:
    6687 
    6688 /* Line 1806 of yacc.c  */
    6689 #line 1266 "parser.yy"
     6822  case 303:
     6823
     6824/* Line 1806 of yacc.c  */
     6825#line 1269 "parser.yy"
    66906826    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66916827    break;
    66926828
    6693   case 303:
    6694 
    6695 /* Line 1806 of yacc.c  */
    6696 #line 1268 "parser.yy"
     6829  case 304:
     6830
     6831/* Line 1806 of yacc.c  */
     6832#line 1271 "parser.yy"
    66976833    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66986834    break;
    66996835
    6700   case 304:
    6701 
    6702 /* Line 1806 of yacc.c  */
    6703 #line 1270 "parser.yy"
     6836  case 305:
     6837
     6838/* Line 1806 of yacc.c  */
     6839#line 1273 "parser.yy"
    67046840    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    67056841    break;
    67066842
    6707   case 305:
    6708 
    6709 /* Line 1806 of yacc.c  */
    6710 #line 1272 "parser.yy"
     6843  case 306:
     6844
     6845/* Line 1806 of yacc.c  */
     6846#line 1275 "parser.yy"
    67116847    {
    67126848                        typedefTable.enterScope();
     
    67146850    break;
    67156851
    6716   case 306:
    6717 
    6718 /* Line 1806 of yacc.c  */
    6719 #line 1276 "parser.yy"
     6852  case 307:
     6853
     6854/* Line 1806 of yacc.c  */
     6855#line 1279 "parser.yy"
    67206856    {
    67216857                        typedefTable.leaveScope();
     
    67246860    break;
    67256861
    6726   case 308:
    6727 
    6728 /* Line 1806 of yacc.c  */
    6729 #line 1285 "parser.yy"
     6862  case 309:
     6863
     6864/* Line 1806 of yacc.c  */
     6865#line 1288 "parser.yy"
    67306866    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67316867    break;
    67326868
    6733   case 309:
    6734 
    6735 /* Line 1806 of yacc.c  */
    6736 #line 1287 "parser.yy"
     6869  case 310:
     6870
     6871/* Line 1806 of yacc.c  */
     6872#line 1290 "parser.yy"
    67376873    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67386874    break;
    67396875
    6740   case 311:
    6741 
    6742 /* Line 1806 of yacc.c  */
    6743 #line 1298 "parser.yy"
     6876  case 312:
     6877
     6878/* Line 1806 of yacc.c  */
     6879#line 1301 "parser.yy"
    67446880    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67456881    break;
    67466882
    6747   case 313:
    6748 
    6749 /* Line 1806 of yacc.c  */
    6750 #line 1307 "parser.yy"
     6883  case 314:
     6884
     6885/* Line 1806 of yacc.c  */
     6886#line 1310 "parser.yy"
    67516887    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    67526888    break;
    67536889
    6754   case 314:
    6755 
    6756 /* Line 1806 of yacc.c  */
    6757 #line 1309 "parser.yy"
     6890  case 315:
     6891
     6892/* Line 1806 of yacc.c  */
     6893#line 1312 "parser.yy"
    67586894    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    67596895    break;
    67606896
    6761   case 315:
    6762 
    6763 /* Line 1806 of yacc.c  */
    6764 #line 1311 "parser.yy"
     6897  case 316:
     6898
     6899/* Line 1806 of yacc.c  */
     6900#line 1314 "parser.yy"
    67656901    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    67666902    break;
    67676903
    6768   case 316:
    6769 
    6770 /* Line 1806 of yacc.c  */
    6771 #line 1313 "parser.yy"
     6904  case 317:
     6905
     6906/* Line 1806 of yacc.c  */
     6907#line 1316 "parser.yy"
    67726908    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    67736909    break;
    67746910
    6775   case 317:
    6776 
    6777 /* Line 1806 of yacc.c  */
    6778 #line 1315 "parser.yy"
     6911  case 318:
     6912
     6913/* Line 1806 of yacc.c  */
     6914#line 1318 "parser.yy"
    67796915    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    67806916    break;
    67816917
    6782   case 318:
    6783 
    6784 /* Line 1806 of yacc.c  */
    6785 #line 1317 "parser.yy"
     6918  case 319:
     6919
     6920/* Line 1806 of yacc.c  */
     6921#line 1320 "parser.yy"
    67866922    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    67876923    break;
    67886924
    6789   case 319:
    6790 
    6791 /* Line 1806 of yacc.c  */
    6792 #line 1319 "parser.yy"
     6925  case 320:
     6926
     6927/* Line 1806 of yacc.c  */
     6928#line 1322 "parser.yy"
    67936929    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    67946930    break;
    67956931
    6796   case 320:
    6797 
    6798 /* Line 1806 of yacc.c  */
    6799 #line 1321 "parser.yy"
     6932  case 321:
     6933
     6934/* Line 1806 of yacc.c  */
     6935#line 1324 "parser.yy"
    68006936    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    68016937    break;
    68026938
    6803   case 321:
    6804 
    6805 /* Line 1806 of yacc.c  */
    6806 #line 1326 "parser.yy"
     6939  case 322:
     6940
     6941/* Line 1806 of yacc.c  */
     6942#line 1329 "parser.yy"
    68076943    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    68086944    break;
    68096945
    6810   case 322:
    6811 
    6812 /* Line 1806 of yacc.c  */
    6813 #line 1328 "parser.yy"
     6946  case 323:
     6947
     6948/* Line 1806 of yacc.c  */
     6949#line 1331 "parser.yy"
    68146950    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    68156951    break;
    68166952
    6817   case 323:
    6818 
    6819 /* Line 1806 of yacc.c  */
    6820 #line 1330 "parser.yy"
     6953  case 324:
     6954
     6955/* Line 1806 of yacc.c  */
     6956#line 1333 "parser.yy"
    68216957    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    68226958    break;
    68236959
    6824   case 324:
    6825 
    6826 /* Line 1806 of yacc.c  */
    6827 #line 1332 "parser.yy"
     6960  case 325:
     6961
     6962/* Line 1806 of yacc.c  */
     6963#line 1335 "parser.yy"
    68286964    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    68296965    break;
    68306966
    6831   case 325:
    6832 
    6833 /* Line 1806 of yacc.c  */
    6834 #line 1334 "parser.yy"
     6967  case 326:
     6968
     6969/* Line 1806 of yacc.c  */
     6970#line 1337 "parser.yy"
    68356971    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    68366972    break;
    68376973
    6838   case 326:
    6839 
    6840 /* Line 1806 of yacc.c  */
    6841 #line 1336 "parser.yy"
     6974  case 327:
     6975
     6976/* Line 1806 of yacc.c  */
     6977#line 1339 "parser.yy"
    68426978    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    68436979    break;
    68446980
    6845   case 327:
    6846 
    6847 /* Line 1806 of yacc.c  */
    6848 #line 1338 "parser.yy"
     6981  case 328:
     6982
     6983/* Line 1806 of yacc.c  */
     6984#line 1341 "parser.yy"
    68496985    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    68506986    break;
    68516987
    6852   case 328:
    6853 
    6854 /* Line 1806 of yacc.c  */
    6855 #line 1340 "parser.yy"
     6988  case 329:
     6989
     6990/* Line 1806 of yacc.c  */
     6991#line 1343 "parser.yy"
    68566992    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    68576993    break;
    68586994
    6859   case 329:
    6860 
    6861 /* Line 1806 of yacc.c  */
    6862 #line 1342 "parser.yy"
     6995  case 330:
     6996
     6997/* Line 1806 of yacc.c  */
     6998#line 1345 "parser.yy"
    68636999    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    68647000    break;
    68657001
    6866   case 330:
    6867 
    6868 /* Line 1806 of yacc.c  */
    6869 #line 1344 "parser.yy"
     7002  case 331:
     7003
     7004/* Line 1806 of yacc.c  */
     7005#line 1347 "parser.yy"
    68707006    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    68717007    break;
    68727008
    6873   case 331:
    6874 
    6875 /* Line 1806 of yacc.c  */
    6876 #line 1346 "parser.yy"
     7009  case 332:
     7010
     7011/* Line 1806 of yacc.c  */
     7012#line 1349 "parser.yy"
    68777013    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    68787014    break;
    68797015
    6880   case 332:
    6881 
    6882 /* Line 1806 of yacc.c  */
    6883 #line 1348 "parser.yy"
     7016  case 333:
     7017
     7018/* Line 1806 of yacc.c  */
     7019#line 1351 "parser.yy"
    68847020    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    68857021    break;
    68867022
    6887   case 333:
    6888 
    6889 /* Line 1806 of yacc.c  */
    6890 #line 1350 "parser.yy"
     7023  case 334:
     7024
     7025/* Line 1806 of yacc.c  */
     7026#line 1353 "parser.yy"
    68917027    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    68927028    break;
    68937029
    6894   case 335:
    6895 
    6896 /* Line 1806 of yacc.c  */
    6897 #line 1357 "parser.yy"
     7030  case 336:
     7031
     7032/* Line 1806 of yacc.c  */
     7033#line 1360 "parser.yy"
    68987034    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68997035    break;
    69007036
    6901   case 336:
    6902 
    6903 /* Line 1806 of yacc.c  */
    6904 #line 1359 "parser.yy"
     7037  case 337:
     7038
     7039/* Line 1806 of yacc.c  */
     7040#line 1362 "parser.yy"
    69057041    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69067042    break;
    69077043
    6908   case 337:
    6909 
    6910 /* Line 1806 of yacc.c  */
    6911 #line 1361 "parser.yy"
     7044  case 338:
     7045
     7046/* Line 1806 of yacc.c  */
     7047#line 1364 "parser.yy"
    69127048    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69137049    break;
    69147050
    6915   case 338:
    6916 
    6917 /* Line 1806 of yacc.c  */
    6918 #line 1363 "parser.yy"
     7051  case 339:
     7052
     7053/* Line 1806 of yacc.c  */
     7054#line 1366 "parser.yy"
    69197055    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    69207056    break;
    69217057
    6922   case 340:
    6923 
    6924 /* Line 1806 of yacc.c  */
    6925 #line 1369 "parser.yy"
     7058  case 341:
     7059
     7060/* Line 1806 of yacc.c  */
     7061#line 1372 "parser.yy"
    69267062    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69277063    break;
    69287064
    6929   case 342:
    6930 
    6931 /* Line 1806 of yacc.c  */
    6932 #line 1376 "parser.yy"
     7065  case 343:
     7066
     7067/* Line 1806 of yacc.c  */
     7068#line 1379 "parser.yy"
    69337069    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69347070    break;
    69357071
    6936   case 343:
    6937 
    6938 /* Line 1806 of yacc.c  */
    6939 #line 1378 "parser.yy"
     7072  case 344:
     7073
     7074/* Line 1806 of yacc.c  */
     7075#line 1381 "parser.yy"
    69407076    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69417077    break;
    69427078
    6943   case 344:
    6944 
    6945 /* Line 1806 of yacc.c  */
    6946 #line 1380 "parser.yy"
     7079  case 345:
     7080
     7081/* Line 1806 of yacc.c  */
     7082#line 1383 "parser.yy"
    69477083    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    69487084    break;
    69497085
    6950   case 345:
    6951 
    6952 /* Line 1806 of yacc.c  */
    6953 #line 1385 "parser.yy"
     7086  case 346:
     7087
     7088/* Line 1806 of yacc.c  */
     7089#line 1388 "parser.yy"
    69547090    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    69557091    break;
    69567092
    6957   case 346:
    6958 
    6959 /* Line 1806 of yacc.c  */
    6960 #line 1387 "parser.yy"
     7093  case 347:
     7094
     7095/* Line 1806 of yacc.c  */
     7096#line 1390 "parser.yy"
    69617097    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    69627098    break;
    69637099
    6964   case 347:
    6965 
    6966 /* Line 1806 of yacc.c  */
    6967 #line 1389 "parser.yy"
     7100  case 348:
     7101
     7102/* Line 1806 of yacc.c  */
     7103#line 1392 "parser.yy"
    69687104    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    69697105    break;
    69707106
    6971   case 348:
    6972 
    6973 /* Line 1806 of yacc.c  */
    6974 #line 1391 "parser.yy"
     7107  case 349:
     7108
     7109/* Line 1806 of yacc.c  */
     7110#line 1394 "parser.yy"
    69757111    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    69767112    break;
    69777113
    6978   case 350:
    6979 
    6980 /* Line 1806 of yacc.c  */
    6981 #line 1397 "parser.yy"
     7114  case 351:
     7115
     7116/* Line 1806 of yacc.c  */
     7117#line 1400 "parser.yy"
    69827118    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69837119    break;
    69847120
    6985   case 351:
    6986 
    6987 /* Line 1806 of yacc.c  */
    6988 #line 1399 "parser.yy"
     7121  case 352:
     7122
     7123/* Line 1806 of yacc.c  */
     7124#line 1402 "parser.yy"
    69897125    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69907126    break;
    69917127
    6992   case 352:
    6993 
    6994 /* Line 1806 of yacc.c  */
    6995 #line 1401 "parser.yy"
     7128  case 353:
     7129
     7130/* Line 1806 of yacc.c  */
     7131#line 1404 "parser.yy"
    69967132    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69977133    break;
    69987134
    6999   case 354:
    7000 
    7001 /* Line 1806 of yacc.c  */
    7002 #line 1407 "parser.yy"
     7135  case 355:
     7136
     7137/* Line 1806 of yacc.c  */
     7138#line 1410 "parser.yy"
    70037139    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70047140    break;
    70057141
    7006   case 355:
    7007 
    7008 /* Line 1806 of yacc.c  */
    7009 #line 1409 "parser.yy"
     7142  case 356:
     7143
     7144/* Line 1806 of yacc.c  */
     7145#line 1412 "parser.yy"
    70107146    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70117147    break;
    70127148
    7013   case 357:
    7014 
    7015 /* Line 1806 of yacc.c  */
    7016 #line 1415 "parser.yy"
     7149  case 358:
     7150
     7151/* Line 1806 of yacc.c  */
     7152#line 1418 "parser.yy"
    70177153    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70187154    break;
    70197155
    7020   case 358:
    7021 
    7022 /* Line 1806 of yacc.c  */
    7023 #line 1417 "parser.yy"
     7156  case 359:
     7157
     7158/* Line 1806 of yacc.c  */
     7159#line 1420 "parser.yy"
    70247160    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70257161    break;
    70267162
    7027   case 359:
    7028 
    7029 /* Line 1806 of yacc.c  */
    7030 #line 1419 "parser.yy"
     7163  case 360:
     7164
     7165/* Line 1806 of yacc.c  */
     7166#line 1422 "parser.yy"
    70317167    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    70327168    break;
    70337169
    7034   case 360:
    7035 
    7036 /* Line 1806 of yacc.c  */
    7037 #line 1424 "parser.yy"
     7170  case 361:
     7171
     7172/* Line 1806 of yacc.c  */
     7173#line 1427 "parser.yy"
    70387174    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    70397175    break;
    70407176
    7041   case 361:
    7042 
    7043 /* Line 1806 of yacc.c  */
    7044 #line 1426 "parser.yy"
     7177  case 362:
     7178
     7179/* Line 1806 of yacc.c  */
     7180#line 1429 "parser.yy"
    70457181    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70467182    break;
    70477183
    7048   case 362:
    7049 
    7050 /* Line 1806 of yacc.c  */
    7051 #line 1428 "parser.yy"
     7184  case 363:
     7185
     7186/* Line 1806 of yacc.c  */
     7187#line 1431 "parser.yy"
    70527188    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70537189    break;
    70547190
    7055   case 365:
    7056 
    7057 /* Line 1806 of yacc.c  */
    7058 #line 1438 "parser.yy"
     7191  case 366:
     7192
     7193/* Line 1806 of yacc.c  */
     7194#line 1441 "parser.yy"
    70597195    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
    70607196    break;
    70617197
    7062   case 366:
    7063 
    7064 /* Line 1806 of yacc.c  */
    7065 #line 1440 "parser.yy"
     7198  case 367:
     7199
     7200/* Line 1806 of yacc.c  */
     7201#line 1443 "parser.yy"
    70667202    {
    70677203                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    70707206    break;
    70717207
    7072   case 367:
    7073 
    7074 /* Line 1806 of yacc.c  */
    7075 #line 1445 "parser.yy"
     7208  case 368:
     7209
     7210/* Line 1806 of yacc.c  */
     7211#line 1448 "parser.yy"
    70767212    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    70777213    break;
    70787214
    7079   case 368:
    7080 
    7081 /* Line 1806 of yacc.c  */
    7082 #line 1447 "parser.yy"
     7215  case 369:
     7216
     7217/* Line 1806 of yacc.c  */
     7218#line 1450 "parser.yy"
    70837219    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl)); }
    70847220    break;
    70857221
    7086   case 369:
    7087 
    7088 /* Line 1806 of yacc.c  */
    7089 #line 1449 "parser.yy"
     7222  case 370:
     7223
     7224/* Line 1806 of yacc.c  */
     7225#line 1452 "parser.yy"
    70907226    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
    70917227    break;
    70927228
    7093   case 370:
    7094 
    7095 /* Line 1806 of yacc.c  */
    7096 #line 1451 "parser.yy"
     7229  case 371:
     7230
     7231/* Line 1806 of yacc.c  */
     7232#line 1454 "parser.yy"
    70977233    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70987234    break;
    70997235
    7100   case 371:
    7101 
    7102 /* Line 1806 of yacc.c  */
    7103 #line 1456 "parser.yy"
     7236  case 372:
     7237
     7238/* Line 1806 of yacc.c  */
     7239#line 1459 "parser.yy"
    71047240    { (yyval.aggKey) = DeclarationNode::Struct; }
    71057241    break;
    71067242
    7107   case 372:
    7108 
    7109 /* Line 1806 of yacc.c  */
    7110 #line 1458 "parser.yy"
     7243  case 373:
     7244
     7245/* Line 1806 of yacc.c  */
     7246#line 1461 "parser.yy"
    71117247    { (yyval.aggKey) = DeclarationNode::Union; }
    71127248    break;
    71137249
    7114   case 373:
    7115 
    7116 /* Line 1806 of yacc.c  */
    7117 #line 1463 "parser.yy"
     7250  case 374:
     7251
     7252/* Line 1806 of yacc.c  */
     7253#line 1466 "parser.yy"
    71187254    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    71197255    break;
    71207256
    7121   case 374:
    7122 
    7123 /* Line 1806 of yacc.c  */
    7124 #line 1465 "parser.yy"
     7257  case 375:
     7258
     7259/* Line 1806 of yacc.c  */
     7260#line 1468 "parser.yy"
    71257261    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    71267262    break;
    71277263
    7128   case 376:
    7129 
    7130 /* Line 1806 of yacc.c  */
    7131 #line 1471 "parser.yy"
    7132     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    7133     break;
    7134 
    7135   case 378:
     7264  case 377:
    71367265
    71377266/* Line 1806 of yacc.c  */
    71387267#line 1474 "parser.yy"
    7139     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    7140     break;
    7141 
    7142   case 380:
    7143 
    7144 /* Line 1806 of yacc.c  */
    7145 #line 1480 "parser.yy"
     7268    { (yyval.decl) = (yyvsp[(2) - (3)].decl)/*->set_extension( true )*/; }
     7269    break;
     7270
     7271  case 379:
     7272
     7273/* Line 1806 of yacc.c  */
     7274#line 1477 "parser.yy"
     7275    { (yyval.decl) = (yyvsp[(2) - (3)].decl)/*->set_extension( true )*/; }
     7276    break;
     7277
     7278  case 381:
     7279
     7280/* Line 1806 of yacc.c  */
     7281#line 1483 "parser.yy"
    71467282    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    71477283    break;
    71487284
    7149   case 381:
    7150 
    7151 /* Line 1806 of yacc.c  */
    7152 #line 1482 "parser.yy"
     7285  case 382:
     7286
     7287/* Line 1806 of yacc.c  */
     7288#line 1485 "parser.yy"
    71537289    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    71547290    break;
    71557291
    7156   case 382:
    7157 
    7158 /* Line 1806 of yacc.c  */
    7159 #line 1484 "parser.yy"
     7292  case 383:
     7293
     7294/* Line 1806 of yacc.c  */
     7295#line 1487 "parser.yy"
    71607296    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    71617297    break;
    71627298
    7163   case 383:
    7164 
    7165 /* Line 1806 of yacc.c  */
    7166 #line 1489 "parser.yy"
     7299  case 384:
     7300
     7301/* Line 1806 of yacc.c  */
     7302#line 1492 "parser.yy"
    71677303    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    71687304    break;
    71697305
    7170   case 384:
    7171 
    7172 /* Line 1806 of yacc.c  */
    7173 #line 1491 "parser.yy"
     7306  case 385:
     7307
     7308/* Line 1806 of yacc.c  */
     7309#line 1494 "parser.yy"
    71747310    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    71757311    break;
    71767312
    7177   case 385:
    7178 
    7179 /* Line 1806 of yacc.c  */
    7180 #line 1496 "parser.yy"
     7313  case 386:
     7314
     7315/* Line 1806 of yacc.c  */
     7316#line 1499 "parser.yy"
    71817317    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    71827318    break;
    71837319
    7184   case 386:
    7185 
    7186 /* Line 1806 of yacc.c  */
    7187 #line 1498 "parser.yy"
     7320  case 387:
     7321
     7322/* Line 1806 of yacc.c  */
     7323#line 1501 "parser.yy"
    71887324    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    7189     break;
    7190 
    7191   case 387:
    7192 
    7193 /* Line 1806 of yacc.c  */
    7194 #line 1501 "parser.yy"
    7195     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71967325    break;
    71977326
     
    72037332    break;
    72047333
    7205   case 390:
    7206 
    7207 /* Line 1806 of yacc.c  */
    7208 #line 1510 "parser.yy"
     7334  case 389:
     7335
     7336/* Line 1806 of yacc.c  */
     7337#line 1507 "parser.yy"
     7338    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7339    break;
     7340
     7341  case 391:
     7342
     7343/* Line 1806 of yacc.c  */
     7344#line 1513 "parser.yy"
    72097345    { (yyval.en) = 0; }
    72107346    break;
    72117347
    7212   case 391:
    7213 
    7214 /* Line 1806 of yacc.c  */
    7215 #line 1512 "parser.yy"
     7348  case 392:
     7349
     7350/* Line 1806 of yacc.c  */
     7351#line 1515 "parser.yy"
    72167352    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    72177353    break;
    72187354
    7219   case 392:
    7220 
    7221 /* Line 1806 of yacc.c  */
    7222 #line 1517 "parser.yy"
     7355  case 393:
     7356
     7357/* Line 1806 of yacc.c  */
     7358#line 1520 "parser.yy"
    72237359    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72247360    break;
    72257361
    7226   case 394:
    7227 
    7228 /* Line 1806 of yacc.c  */
    7229 #line 1526 "parser.yy"
     7362  case 395:
     7363
     7364/* Line 1806 of yacc.c  */
     7365#line 1529 "parser.yy"
    72307366    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    72317367    break;
    72327368
    7233   case 395:
    7234 
    7235 /* Line 1806 of yacc.c  */
    7236 #line 1528 "parser.yy"
     7369  case 396:
     7370
     7371/* Line 1806 of yacc.c  */
     7372#line 1531 "parser.yy"
    72377373    {
    72387374                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    72417377    break;
    72427378
    7243   case 396:
    7244 
    7245 /* Line 1806 of yacc.c  */
    7246 #line 1533 "parser.yy"
     7379  case 397:
     7380
     7381/* Line 1806 of yacc.c  */
     7382#line 1536 "parser.yy"
    72477383    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    72487384    break;
    72497385
    7250   case 397:
    7251 
    7252 /* Line 1806 of yacc.c  */
    7253 #line 1535 "parser.yy"
     7386  case 398:
     7387
     7388/* Line 1806 of yacc.c  */
     7389#line 1538 "parser.yy"
    72547390    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    72557391    break;
    72567392
    7257   case 398:
    7258 
    7259 /* Line 1806 of yacc.c  */
    7260 #line 1540 "parser.yy"
     7393  case 399:
     7394
     7395/* Line 1806 of yacc.c  */
     7396#line 1543 "parser.yy"
    72617397    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    72627398    break;
    72637399
    7264   case 399:
    7265 
    7266 /* Line 1806 of yacc.c  */
    7267 #line 1542 "parser.yy"
     7400  case 400:
     7401
     7402/* Line 1806 of yacc.c  */
     7403#line 1545 "parser.yy"
    72687404    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    72697405    break;
    72707406
    7271   case 400:
    7272 
    7273 /* Line 1806 of yacc.c  */
    7274 #line 1547 "parser.yy"
     7407  case 401:
     7408
     7409/* Line 1806 of yacc.c  */
     7410#line 1550 "parser.yy"
    72757411    { (yyval.en) = 0; }
    72767412    break;
    72777413
    7278   case 401:
    7279 
    7280 /* Line 1806 of yacc.c  */
    7281 #line 1549 "parser.yy"
     7414  case 402:
     7415
     7416/* Line 1806 of yacc.c  */
     7417#line 1552 "parser.yy"
    72827418    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72837419    break;
    72847420
    7285   case 402:
    7286 
    7287 /* Line 1806 of yacc.c  */
    7288 #line 1556 "parser.yy"
     7421  case 403:
     7422
     7423/* Line 1806 of yacc.c  */
     7424#line 1559 "parser.yy"
    72897425    { (yyval.decl) = 0; }
    72907426    break;
    72917427
    7292   case 406:
    7293 
    7294 /* Line 1806 of yacc.c  */
    7295 #line 1564 "parser.yy"
     7428  case 407:
     7429
     7430/* Line 1806 of yacc.c  */
     7431#line 1567 "parser.yy"
    72967432    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72977433    break;
    72987434
    7299   case 407:
    7300 
    7301 /* Line 1806 of yacc.c  */
    7302 #line 1566 "parser.yy"
     7435  case 408:
     7436
     7437/* Line 1806 of yacc.c  */
     7438#line 1569 "parser.yy"
    73037439    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    73047440    break;
    73057441
    7306   case 408:
    7307 
    7308 /* Line 1806 of yacc.c  */
    7309 #line 1568 "parser.yy"
     7442  case 409:
     7443
     7444/* Line 1806 of yacc.c  */
     7445#line 1571 "parser.yy"
    73107446    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    73117447    break;
    73127448
    7313   case 410:
    7314 
    7315 /* Line 1806 of yacc.c  */
    7316 #line 1576 "parser.yy"
     7449  case 411:
     7450
     7451/* Line 1806 of yacc.c  */
     7452#line 1579 "parser.yy"
    73177453    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73187454    break;
    73197455
    7320   case 411:
    7321 
    7322 /* Line 1806 of yacc.c  */
    7323 #line 1578 "parser.yy"
     7456  case 412:
     7457
     7458/* Line 1806 of yacc.c  */
     7459#line 1581 "parser.yy"
    73247460    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73257461    break;
    73267462
    7327   case 412:
    7328 
    7329 /* Line 1806 of yacc.c  */
    7330 #line 1580 "parser.yy"
     7463  case 413:
     7464
     7465/* Line 1806 of yacc.c  */
     7466#line 1583 "parser.yy"
    73317467    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    73327468    break;
    73337469
    7334   case 414:
    7335 
    7336 /* Line 1806 of yacc.c  */
    7337 #line 1586 "parser.yy"
     7470  case 415:
     7471
     7472/* Line 1806 of yacc.c  */
     7473#line 1589 "parser.yy"
    73387474    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73397475    break;
    73407476
    7341   case 415:
    7342 
    7343 /* Line 1806 of yacc.c  */
    7344 #line 1591 "parser.yy"
     7477  case 416:
     7478
     7479/* Line 1806 of yacc.c  */
     7480#line 1594 "parser.yy"
    73457481    { (yyval.decl) = 0; }
    73467482    break;
    73477483
    7348   case 418:
    7349 
    7350 /* Line 1806 of yacc.c  */
    7351 #line 1598 "parser.yy"
     7484  case 419:
     7485
     7486/* Line 1806 of yacc.c  */
     7487#line 1601 "parser.yy"
    73527488    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    73537489    break;
    73547490
    7355   case 421:
    7356 
    7357 /* Line 1806 of yacc.c  */
    7358 #line 1605 "parser.yy"
     7491  case 422:
     7492
     7493/* Line 1806 of yacc.c  */
     7494#line 1608 "parser.yy"
    73597495    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73607496    break;
    73617497
    7362   case 422:
    7363 
    7364 /* Line 1806 of yacc.c  */
    7365 #line 1607 "parser.yy"
     7498  case 423:
     7499
     7500/* Line 1806 of yacc.c  */
     7501#line 1610 "parser.yy"
    73667502    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7367     break;
    7368 
    7369   case 424:
    7370 
    7371 /* Line 1806 of yacc.c  */
    7372 #line 1616 "parser.yy"
    7373     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73747503    break;
    73757504
     
    73847513
    73857514/* Line 1806 of yacc.c  */
    7386 #line 1621 "parser.yy"
     7515#line 1622 "parser.yy"
     7516    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     7517    break;
     7518
     7519  case 427:
     7520
     7521/* Line 1806 of yacc.c  */
     7522#line 1624 "parser.yy"
    73877523    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    73887524    break;
    73897525
    7390   case 431:
    7391 
    7392 /* Line 1806 of yacc.c  */
    7393 #line 1631 "parser.yy"
     7526  case 432:
     7527
     7528/* Line 1806 of yacc.c  */
     7529#line 1634 "parser.yy"
    73947530    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73957531    break;
    73967532
    7397   case 433:
    7398 
    7399 /* Line 1806 of yacc.c  */
    7400 #line 1637 "parser.yy"
     7533  case 434:
     7534
     7535/* Line 1806 of yacc.c  */
     7536#line 1640 "parser.yy"
    74017537    {
    74027538                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    74057541    break;
    74067542
    7407   case 434:
    7408 
    7409 /* Line 1806 of yacc.c  */
    7410 #line 1642 "parser.yy"
     7543  case 435:
     7544
     7545/* Line 1806 of yacc.c  */
     7546#line 1645 "parser.yy"
    74117547    {
    74127548                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    74157551    break;
    74167552
    7417   case 436:
    7418 
    7419 /* Line 1806 of yacc.c  */
    7420 #line 1651 "parser.yy"
     7553  case 437:
     7554
     7555/* Line 1806 of yacc.c  */
     7556#line 1654 "parser.yy"
    74217557    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    74227558    break;
    74237559
    7424   case 437:
    7425 
    7426 /* Line 1806 of yacc.c  */
    7427 #line 1660 "parser.yy"
     7560  case 438:
     7561
     7562/* Line 1806 of yacc.c  */
     7563#line 1663 "parser.yy"
    74287564    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    74297565    break;
    74307566
    7431   case 438:
    7432 
    7433 /* Line 1806 of yacc.c  */
    7434 #line 1662 "parser.yy"
     7567  case 439:
     7568
     7569/* Line 1806 of yacc.c  */
     7570#line 1665 "parser.yy"
    74357571    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    74367572    break;
    74377573
    7438   case 450:
    7439 
    7440 /* Line 1806 of yacc.c  */
    7441 #line 1687 "parser.yy"
     7574  case 451:
     7575
     7576/* Line 1806 of yacc.c  */
     7577#line 1690 "parser.yy"
    74427578    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    74437579    break;
    74447580
    7445   case 454:
    7446 
    7447 /* Line 1806 of yacc.c  */
    7448 #line 1695 "parser.yy"
     7581  case 455:
     7582
     7583/* Line 1806 of yacc.c  */
     7584#line 1698 "parser.yy"
    74497585    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    74507586    break;
    74517587
    7452   case 455:
    7453 
    7454 /* Line 1806 of yacc.c  */
    7455 #line 1700 "parser.yy"
     7588  case 456:
     7589
     7590/* Line 1806 of yacc.c  */
     7591#line 1703 "parser.yy"
    74567592    { (yyval.in) = 0; }
    74577593    break;
    74587594
    7459   case 456:
    7460 
    7461 /* Line 1806 of yacc.c  */
    7462 #line 1702 "parser.yy"
     7595  case 457:
     7596
     7597/* Line 1806 of yacc.c  */
     7598#line 1705 "parser.yy"
    74637599    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    74647600    break;
    74657601
    7466   case 457:
    7467 
    7468 /* Line 1806 of yacc.c  */
    7469 #line 1704 "parser.yy"
    7470     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7471     break;
    7472 
    74737602  case 458:
    74747603
    74757604/* Line 1806 of yacc.c  */
    7476 #line 1708 "parser.yy"
     7605#line 1707 "parser.yy"
     7606    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     7607    break;
     7608
     7609  case 459:
     7610
     7611/* Line 1806 of yacc.c  */
     7612#line 1711 "parser.yy"
    74777613    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    74787614    break;
    74797615
    7480   case 459:
    7481 
    7482 /* Line 1806 of yacc.c  */
    7483 #line 1709 "parser.yy"
     7616  case 460:
     7617
     7618/* Line 1806 of yacc.c  */
     7619#line 1712 "parser.yy"
    74847620    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    74857621    break;
    74867622
    7487   case 460:
    7488 
    7489 /* Line 1806 of yacc.c  */
    7490 #line 1714 "parser.yy"
     7623  case 461:
     7624
     7625/* Line 1806 of yacc.c  */
     7626#line 1717 "parser.yy"
    74917627    { (yyval.in) = 0; }
    74927628    break;
    74937629
    7494   case 462:
    7495 
    7496 /* Line 1806 of yacc.c  */
    7497 #line 1716 "parser.yy"
     7630  case 463:
     7631
     7632/* Line 1806 of yacc.c  */
     7633#line 1719 "parser.yy"
    74987634    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    74997635    break;
    75007636
    7501   case 463:
    7502 
    7503 /* Line 1806 of yacc.c  */
    7504 #line 1717 "parser.yy"
     7637  case 464:
     7638
     7639/* Line 1806 of yacc.c  */
     7640#line 1720 "parser.yy"
    75057641    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    75067642    break;
    75077643
    7508   case 464:
    7509 
    7510 /* Line 1806 of yacc.c  */
    7511 #line 1719 "parser.yy"
     7644  case 465:
     7645
     7646/* Line 1806 of yacc.c  */
     7647#line 1722 "parser.yy"
    75127648    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    75137649    break;
    75147650
    7515   case 466:
    7516 
    7517 /* Line 1806 of yacc.c  */
    7518 #line 1735 "parser.yy"
     7651  case 467:
     7652
     7653/* Line 1806 of yacc.c  */
     7654#line 1738 "parser.yy"
    75197655    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    75207656    break;
    75217657
    7522   case 468:
    7523 
    7524 /* Line 1806 of yacc.c  */
    7525 #line 1741 "parser.yy"
     7658  case 469:
     7659
     7660/* Line 1806 of yacc.c  */
     7661#line 1744 "parser.yy"
    75267662    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    75277663    break;
    75287664
    7529   case 469:
    7530 
    7531 /* Line 1806 of yacc.c  */
    7532 #line 1749 "parser.yy"
     7665  case 470:
     7666
     7667/* Line 1806 of yacc.c  */
     7668#line 1752 "parser.yy"
    75337669    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    75347670    break;
    75357671
    7536   case 470:
    7537 
    7538 /* Line 1806 of yacc.c  */
    7539 #line 1751 "parser.yy"
     7672  case 471:
     7673
     7674/* Line 1806 of yacc.c  */
     7675#line 1754 "parser.yy"
    75407676    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    75417677    break;
    75427678
    7543   case 471:
    7544 
    7545 /* Line 1806 of yacc.c  */
    7546 #line 1754 "parser.yy"
     7679  case 472:
     7680
     7681/* Line 1806 of yacc.c  */
     7682#line 1757 "parser.yy"
    75477683    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    75487684    break;
    75497685
    7550   case 472:
    7551 
    7552 /* Line 1806 of yacc.c  */
    7553 #line 1756 "parser.yy"
     7686  case 473:
     7687
     7688/* Line 1806 of yacc.c  */
     7689#line 1759 "parser.yy"
    75547690    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    75557691    break;
    75567692
    7557   case 473:
    7558 
    7559 /* Line 1806 of yacc.c  */
    7560 #line 1758 "parser.yy"
     7693  case 474:
     7694
     7695/* Line 1806 of yacc.c  */
     7696#line 1761 "parser.yy"
    75617697    { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
    75627698    break;
    75637699
    7564   case 474:
    7565 
    7566 /* Line 1806 of yacc.c  */
    7567 #line 1760 "parser.yy"
     7700  case 475:
     7701
     7702/* Line 1806 of yacc.c  */
     7703#line 1763 "parser.yy"
    75687704    { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
    75697705    break;
    75707706
    7571   case 476:
    7572 
    7573 /* Line 1806 of yacc.c  */
    7574 #line 1784 "parser.yy"
     7707  case 477:
     7708
     7709/* Line 1806 of yacc.c  */
     7710#line 1787 "parser.yy"
    75757711    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75767712    break;
    75777713
    7578   case 477:
    7579 
    7580 /* Line 1806 of yacc.c  */
    7581 #line 1786 "parser.yy"
     7714  case 478:
     7715
     7716/* Line 1806 of yacc.c  */
     7717#line 1789 "parser.yy"
    75827718    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75837719    break;
    75847720
    7585   case 478:
    7586 
    7587 /* Line 1806 of yacc.c  */
    7588 #line 1788 "parser.yy"
     7721  case 479:
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1791 "parser.yy"
    75897725    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    75907726    break;
    75917727
    7592   case 480:
    7593 
    7594 /* Line 1806 of yacc.c  */
    7595 #line 1794 "parser.yy"
     7728  case 481:
     7729
     7730/* Line 1806 of yacc.c  */
     7731#line 1797 "parser.yy"
    75967732    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75977733    break;
    75987734
    7599   case 481:
    7600 
    7601 /* Line 1806 of yacc.c  */
    7602 #line 1796 "parser.yy"
     7735  case 482:
     7736
     7737/* Line 1806 of yacc.c  */
     7738#line 1799 "parser.yy"
    76037739    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    76047740    break;
    76057741
    7606   case 482:
    7607 
    7608 /* Line 1806 of yacc.c  */
    7609 #line 1801 "parser.yy"
     7742  case 483:
     7743
     7744/* Line 1806 of yacc.c  */
     7745#line 1804 "parser.yy"
    76107746    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    76117747    break;
    76127748
    7613   case 484:
    7614 
    7615 /* Line 1806 of yacc.c  */
    7616 #line 1807 "parser.yy"
     7749  case 485:
     7750
     7751/* Line 1806 of yacc.c  */
     7752#line 1810 "parser.yy"
    76177753    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    76187754    break;
    76197755
    7620   case 485:
    7621 
    7622 /* Line 1806 of yacc.c  */
    7623 #line 1812 "parser.yy"
     7756  case 486:
     7757
     7758/* Line 1806 of yacc.c  */
     7759#line 1815 "parser.yy"
    76247760    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    76257761    break;
    76267762
    7627   case 486:
    7628 
    7629 /* Line 1806 of yacc.c  */
    7630 #line 1814 "parser.yy"
     7763  case 487:
     7764
     7765/* Line 1806 of yacc.c  */
     7766#line 1817 "parser.yy"
    76317767    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    76327768    break;
    76337769
    7634   case 488:
    7635 
    7636 /* Line 1806 of yacc.c  */
    7637 #line 1820 "parser.yy"
     7770  case 489:
     7771
     7772/* Line 1806 of yacc.c  */
     7773#line 1823 "parser.yy"
    76387774    { (yyval.tclass) = DeclarationNode::Type; }
    76397775    break;
    76407776
    7641   case 489:
    7642 
    7643 /* Line 1806 of yacc.c  */
    7644 #line 1822 "parser.yy"
     7777  case 490:
     7778
     7779/* Line 1806 of yacc.c  */
     7780#line 1825 "parser.yy"
    76457781    { (yyval.tclass) = DeclarationNode::Ftype; }
    76467782    break;
    76477783
    7648   case 490:
    7649 
    7650 /* Line 1806 of yacc.c  */
    7651 #line 1824 "parser.yy"
     7784  case 491:
     7785
     7786/* Line 1806 of yacc.c  */
     7787#line 1827 "parser.yy"
    76527788    { (yyval.tclass) = DeclarationNode::Dtype; }
    76537789    break;
    76547790
    7655   case 491:
    7656 
    7657 /* Line 1806 of yacc.c  */
    7658 #line 1829 "parser.yy"
     7791  case 492:
     7792
     7793/* Line 1806 of yacc.c  */
     7794#line 1832 "parser.yy"
    76597795    { (yyval.decl) = 0; }
    76607796    break;
    76617797
    7662   case 492:
    7663 
    7664 /* Line 1806 of yacc.c  */
    7665 #line 1831 "parser.yy"
     7798  case 493:
     7799
     7800/* Line 1806 of yacc.c  */
     7801#line 1834 "parser.yy"
    76667802    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    76677803    break;
    76687804
    7669   case 493:
    7670 
    7671 /* Line 1806 of yacc.c  */
    7672 #line 1836 "parser.yy"
     7805  case 494:
     7806
     7807/* Line 1806 of yacc.c  */
     7808#line 1839 "parser.yy"
    76737809    {
    76747810                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    76777813    break;
    76787814
    7679   case 494:
    7680 
    7681 /* Line 1806 of yacc.c  */
    7682 #line 1841 "parser.yy"
     7815  case 495:
     7816
     7817/* Line 1806 of yacc.c  */
     7818#line 1844 "parser.yy"
    76837819    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    76847820    break;
    76857821
    7686   case 495:
    7687 
    7688 /* Line 1806 of yacc.c  */
    7689 #line 1843 "parser.yy"
     7822  case 496:
     7823
     7824/* Line 1806 of yacc.c  */
     7825#line 1846 "parser.yy"
    76907826    { (yyval.decl) = 0; }
    76917827    break;
    76927828
    7693   case 496:
    7694 
    7695 /* Line 1806 of yacc.c  */
    7696 #line 1848 "parser.yy"
     7829  case 497:
     7830
     7831/* Line 1806 of yacc.c  */
     7832#line 1851 "parser.yy"
    76977833    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    76987834    break;
    76997835
    7700   case 498:
    7701 
    7702 /* Line 1806 of yacc.c  */
    7703 #line 1851 "parser.yy"
     7836  case 499:
     7837
     7838/* Line 1806 of yacc.c  */
     7839#line 1854 "parser.yy"
    77047840    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    77057841    break;
    77067842
    7707   case 499:
    7708 
    7709 /* Line 1806 of yacc.c  */
    7710 #line 1853 "parser.yy"
     7843  case 500:
     7844
     7845/* Line 1806 of yacc.c  */
     7846#line 1856 "parser.yy"
    77117847    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    77127848    break;
    77137849
    7714   case 500:
    7715 
    7716 /* Line 1806 of yacc.c  */
    7717 #line 1858 "parser.yy"
     7850  case 501:
     7851
     7852/* Line 1806 of yacc.c  */
     7853#line 1861 "parser.yy"
    77187854    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    77197855    break;
    77207856
    7721   case 501:
    7722 
    7723 /* Line 1806 of yacc.c  */
    7724 #line 1860 "parser.yy"
     7857  case 502:
     7858
     7859/* Line 1806 of yacc.c  */
     7860#line 1863 "parser.yy"
    77257861    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    77267862    break;
    77277863
    7728   case 502:
    7729 
    7730 /* Line 1806 of yacc.c  */
    7731 #line 1862 "parser.yy"
     7864  case 503:
     7865
     7866/* Line 1806 of yacc.c  */
     7867#line 1865 "parser.yy"
    77327868    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    77337869    break;
    77347870
    7735   case 503:
    7736 
    7737 /* Line 1806 of yacc.c  */
    7738 #line 1867 "parser.yy"
     7871  case 504:
     7872
     7873/* Line 1806 of yacc.c  */
     7874#line 1870 "parser.yy"
    77397875    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    77407876    break;
    77417877
    7742   case 504:
    7743 
    7744 /* Line 1806 of yacc.c  */
    7745 #line 1869 "parser.yy"
     7878  case 505:
     7879
     7880/* Line 1806 of yacc.c  */
     7881#line 1872 "parser.yy"
    77467882    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    77477883    break;
    77487884
    7749   case 505:
    7750 
    7751 /* Line 1806 of yacc.c  */
    7752 #line 1874 "parser.yy"
     7885  case 506:
     7886
     7887/* Line 1806 of yacc.c  */
     7888#line 1877 "parser.yy"
    77537889    {
    77547890                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    77577893    break;
    77587894
    7759   case 506:
    7760 
    7761 /* Line 1806 of yacc.c  */
    7762 #line 1879 "parser.yy"
     7895  case 507:
     7896
     7897/* Line 1806 of yacc.c  */
     7898#line 1882 "parser.yy"
    77637899    {
    77647900                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    77677903    break;
    77687904
    7769   case 507:
    7770 
    7771 /* Line 1806 of yacc.c  */
    7772 #line 1887 "parser.yy"
     7905  case 508:
     7906
     7907/* Line 1806 of yacc.c  */
     7908#line 1890 "parser.yy"
    77737909    {
    77747910                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    77777913    break;
    77787914
    7779   case 508:
    7780 
    7781 /* Line 1806 of yacc.c  */
    7782 #line 1892 "parser.yy"
     7915  case 509:
     7916
     7917/* Line 1806 of yacc.c  */
     7918#line 1895 "parser.yy"
    77837919    {
    77847920                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    77877923    break;
    77887924
    7789   case 509:
    7790 
    7791 /* Line 1806 of yacc.c  */
    7792 #line 1897 "parser.yy"
     7925  case 510:
     7926
     7927/* Line 1806 of yacc.c  */
     7928#line 1900 "parser.yy"
    77937929    {
    77947930                        typedefTable.leaveTrait();
     
    77987934    break;
    77997935
    7800   case 511:
    7801 
    7802 /* Line 1806 of yacc.c  */
    7803 #line 1907 "parser.yy"
     7936  case 512:
     7937
     7938/* Line 1806 of yacc.c  */
     7939#line 1910 "parser.yy"
    78047940    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    78057941    break;
    78067942
    7807   case 514:
    7808 
    7809 /* Line 1806 of yacc.c  */
    7810 #line 1917 "parser.yy"
     7943  case 515:
     7944
     7945/* Line 1806 of yacc.c  */
     7946#line 1920 "parser.yy"
    78117947    {
    78127948                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78157951    break;
    78167952
    7817   case 515:
    7818 
    7819 /* Line 1806 of yacc.c  */
    7820 #line 1922 "parser.yy"
     7953  case 516:
     7954
     7955/* Line 1806 of yacc.c  */
     7956#line 1925 "parser.yy"
    78217957    {
    78227958                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78257961    break;
    78267962
    7827   case 516:
    7828 
    7829 /* Line 1806 of yacc.c  */
    7830 #line 1927 "parser.yy"
     7963  case 517:
     7964
     7965/* Line 1806 of yacc.c  */
     7966#line 1930 "parser.yy"
    78317967    {
    78327968                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    78357971    break;
    78367972
    7837   case 517:
    7838 
    7839 /* Line 1806 of yacc.c  */
    7840 #line 1935 "parser.yy"
     7973  case 518:
     7974
     7975/* Line 1806 of yacc.c  */
     7976#line 1938 "parser.yy"
    78417977    {
    78427978                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78457981    break;
    78467982
    7847   case 518:
    7848 
    7849 /* Line 1806 of yacc.c  */
    7850 #line 1940 "parser.yy"
     7983  case 519:
     7984
     7985/* Line 1806 of yacc.c  */
     7986#line 1943 "parser.yy"
    78517987    {
    78527988                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78557991    break;
    78567992
    7857   case 519:
    7858 
    7859 /* Line 1806 of yacc.c  */
    7860 #line 1950 "parser.yy"
     7993  case 520:
     7994
     7995/* Line 1806 of yacc.c  */
     7996#line 1953 "parser.yy"
    78617997    {}
    78627998    break;
    78637999
    7864   case 520:
    7865 
    7866 /* Line 1806 of yacc.c  */
    7867 #line 1952 "parser.yy"
     8000  case 521:
     8001
     8002/* Line 1806 of yacc.c  */
     8003#line 1955 "parser.yy"
    78688004    {
    78698005                        if ( theTree ) {
     
    78758011    break;
    78768012
    7877   case 522:
    7878 
    7879 /* Line 1806 of yacc.c  */
    7880 #line 1964 "parser.yy"
     8013  case 523:
     8014
     8015/* Line 1806 of yacc.c  */
     8016#line 1967 "parser.yy"
    78818017    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    78828018    break;
    78838019
    7884   case 523:
    7885 
    7886 /* Line 1806 of yacc.c  */
    7887 #line 1969 "parser.yy"
     8020  case 524:
     8021
     8022/* Line 1806 of yacc.c  */
     8023#line 1972 "parser.yy"
    78888024    { (yyval.decl) = 0; }
    78898025    break;
    78908026
    7891   case 527:
    7892 
    7893 /* Line 1806 of yacc.c  */
    7894 #line 1977 "parser.yy"
     8027  case 528:
     8028
     8029/* Line 1806 of yacc.c  */
     8030#line 1980 "parser.yy"
    78958031    {}
    78968032    break;
    78978033
    7898   case 528:
    7899 
    7900 /* Line 1806 of yacc.c  */
    7901 #line 1979 "parser.yy"
     8034  case 529:
     8035
     8036/* Line 1806 of yacc.c  */
     8037#line 1982 "parser.yy"
    79028038    {
    79038039                        linkageStack.push( linkage );
     
    79068042    break;
    79078043
    7908   case 529:
    7909 
    7910 /* Line 1806 of yacc.c  */
    7911 #line 1984 "parser.yy"
     8044  case 530:
     8045
     8046/* Line 1806 of yacc.c  */
     8047#line 1987 "parser.yy"
    79128048    {
    79138049                        linkage = linkageStack.top();
     
    79178053    break;
    79188054
    7919   case 530:
    7920 
    7921 /* Line 1806 of yacc.c  */
    7922 #line 1990 "parser.yy"
    7923     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7924     break;
    7925 
    7926   case 532:
    7927 
    7928 /* Line 1806 of yacc.c  */
    7929 #line 2000 "parser.yy"
     8055  case 531:
     8056
     8057/* Line 1806 of yacc.c  */
     8058#line 1993 "parser.yy"
     8059    { (yyval.decl) = (yyvsp[(2) - (2)].decl)/*->set_extension( true )*/; }
     8060    break;
     8061
     8062  case 533:
     8063
     8064/* Line 1806 of yacc.c  */
     8065#line 2004 "parser.yy"
    79308066    {
    79318067                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79358071    break;
    79368072
    7937   case 533:
    7938 
    7939 /* Line 1806 of yacc.c  */
    7940 #line 2006 "parser.yy"
     8073  case 534:
     8074
     8075/* Line 1806 of yacc.c  */
     8076#line 2010 "parser.yy"
    79418077    {
    79428078                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79468082    break;
    79478083
    7948   case 534:
    7949 
    7950 /* Line 1806 of yacc.c  */
    7951 #line 2015 "parser.yy"
     8084  case 535:
     8085
     8086/* Line 1806 of yacc.c  */
     8087#line 2019 "parser.yy"
    79528088    {
    79538089                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79578093    break;
    79588094
    7959   case 535:
    7960 
    7961 /* Line 1806 of yacc.c  */
    7962 #line 2021 "parser.yy"
     8095  case 536:
     8096
     8097/* Line 1806 of yacc.c  */
     8098#line 2025 "parser.yy"
    79638099    {
    79648100                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79688104    break;
    79698105
    7970   case 536:
    7971 
    7972 /* Line 1806 of yacc.c  */
    7973 #line 2027 "parser.yy"
     8106  case 537:
     8107
     8108/* Line 1806 of yacc.c  */
     8109#line 2031 "parser.yy"
    79748110    {
    79758111                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79798115    break;
    79808116
    7981   case 537:
    7982 
    7983 /* Line 1806 of yacc.c  */
    7984 #line 2033 "parser.yy"
     8117  case 538:
     8118
     8119/* Line 1806 of yacc.c  */
     8120#line 2037 "parser.yy"
    79858121    {
    79868122                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79908126    break;
    79918127
    7992   case 538:
    7993 
    7994 /* Line 1806 of yacc.c  */
    7995 #line 2039 "parser.yy"
     8128  case 539:
     8129
     8130/* Line 1806 of yacc.c  */
     8131#line 2043 "parser.yy"
    79968132    {
    79978133                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80018137    break;
    80028138
    8003   case 539:
    8004 
    8005 /* Line 1806 of yacc.c  */
    8006 #line 2047 "parser.yy"
     8139  case 540:
     8140
     8141/* Line 1806 of yacc.c  */
     8142#line 2051 "parser.yy"
    80078143    {
    80088144                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80128148    break;
    80138149
    8014   case 540:
    8015 
    8016 /* Line 1806 of yacc.c  */
    8017 #line 2053 "parser.yy"
     8150  case 541:
     8151
     8152/* Line 1806 of yacc.c  */
     8153#line 2057 "parser.yy"
    80188154    {
    80198155                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80238159    break;
    80248160
    8025   case 541:
    8026 
    8027 /* Line 1806 of yacc.c  */
    8028 #line 2061 "parser.yy"
     8161  case 542:
     8162
     8163/* Line 1806 of yacc.c  */
     8164#line 2065 "parser.yy"
    80298165    {
    80308166                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80348170    break;
    80358171
    8036   case 542:
    8037 
    8038 /* Line 1806 of yacc.c  */
    8039 #line 2067 "parser.yy"
     8172  case 543:
     8173
     8174/* Line 1806 of yacc.c  */
     8175#line 2071 "parser.yy"
    80408176    {
    80418177                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80458181    break;
    80468182
    8047   case 546:
    8048 
    8049 /* Line 1806 of yacc.c  */
    8050 #line 2082 "parser.yy"
     8183  case 547:
     8184
     8185/* Line 1806 of yacc.c  */
     8186#line 2086 "parser.yy"
    80518187    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    80528188    break;
    80538189
    8054   case 549:
    8055 
    8056 /* Line 1806 of yacc.c  */
    8057 #line 2092 "parser.yy"
     8190  case 550:
     8191
     8192/* Line 1806 of yacc.c  */
     8193#line 2096 "parser.yy"
    80588194    { (yyval.decl) = 0; }
    80598195    break;
    80608196
    8061   case 552:
    8062 
    8063 /* Line 1806 of yacc.c  */
    8064 #line 2099 "parser.yy"
     8197  case 553:
     8198
     8199/* Line 1806 of yacc.c  */
     8200#line 2103 "parser.yy"
    80658201    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    80668202    break;
    80678203
    8068   case 553:
    8069 
    8070 /* Line 1806 of yacc.c  */
    8071 #line 2105 "parser.yy"
     8204  case 554:
     8205
     8206/* Line 1806 of yacc.c  */
     8207#line 2109 "parser.yy"
    80728208    { (yyval.decl) = 0; }
    80738209    break;
    80748210
    8075   case 559:
    8076 
    8077 /* Line 1806 of yacc.c  */
    8078 #line 2120 "parser.yy"
     8211  case 560:
     8212
     8213/* Line 1806 of yacc.c  */
     8214#line 2124 "parser.yy"
    80798215    {}
    80808216    break;
    80818217
    8082   case 560:
    8083 
    8084 /* Line 1806 of yacc.c  */
    8085 #line 2121 "parser.yy"
     8218  case 561:
     8219
     8220/* Line 1806 of yacc.c  */
     8221#line 2125 "parser.yy"
    80868222    {}
    80878223    break;
    80888224
    8089   case 561:
    8090 
    8091 /* Line 1806 of yacc.c  */
    8092 #line 2122 "parser.yy"
     8225  case 562:
     8226
     8227/* Line 1806 of yacc.c  */
     8228#line 2126 "parser.yy"
    80938229    {}
    80948230    break;
    80958231
    8096   case 562:
    8097 
    8098 /* Line 1806 of yacc.c  */
    8099 #line 2123 "parser.yy"
     8232  case 563:
     8233
     8234/* Line 1806 of yacc.c  */
     8235#line 2127 "parser.yy"
    81008236    {}
    81018237    break;
    81028238
    8103   case 563:
    8104 
    8105 /* Line 1806 of yacc.c  */
    8106 #line 2158 "parser.yy"
     8239  case 564:
     8240
     8241/* Line 1806 of yacc.c  */
     8242#line 2162 "parser.yy"
    81078243    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81088244    break;
    81098245
    8110   case 565:
    8111 
    8112 /* Line 1806 of yacc.c  */
    8113 #line 2161 "parser.yy"
     8246  case 566:
     8247
     8248/* Line 1806 of yacc.c  */
     8249#line 2165 "parser.yy"
    81148250    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81158251    break;
    81168252
    8117   case 566:
    8118 
    8119 /* Line 1806 of yacc.c  */
    8120 #line 2163 "parser.yy"
     8253  case 567:
     8254
     8255/* Line 1806 of yacc.c  */
     8256#line 2167 "parser.yy"
    81218257    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81228258    break;
    81238259
    8124   case 567:
    8125 
    8126 /* Line 1806 of yacc.c  */
    8127 #line 2168 "parser.yy"
     8260  case 568:
     8261
     8262/* Line 1806 of yacc.c  */
     8263#line 2172 "parser.yy"
    81288264    {
    81298265                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    81328268    break;
    81338269
    8134   case 568:
    8135 
    8136 /* Line 1806 of yacc.c  */
    8137 #line 2173 "parser.yy"
     8270  case 569:
     8271
     8272/* Line 1806 of yacc.c  */
     8273#line 2177 "parser.yy"
    81388274    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81398275    break;
    81408276
    8141   case 569:
    8142 
    8143 /* Line 1806 of yacc.c  */
    8144 #line 2178 "parser.yy"
     8277  case 570:
     8278
     8279/* Line 1806 of yacc.c  */
     8280#line 2182 "parser.yy"
    81458281    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81468282    break;
    81478283
    8148   case 570:
    8149 
    8150 /* Line 1806 of yacc.c  */
    8151 #line 2180 "parser.yy"
     8284  case 571:
     8285
     8286/* Line 1806 of yacc.c  */
     8287#line 2184 "parser.yy"
    81528288    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81538289    break;
    81548290
    8155   case 571:
    8156 
    8157 /* Line 1806 of yacc.c  */
    8158 #line 2182 "parser.yy"
     8291  case 572:
     8292
     8293/* Line 1806 of yacc.c  */
     8294#line 2186 "parser.yy"
    81598295    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81608296    break;
    81618297
    8162   case 572:
    8163 
    8164 /* Line 1806 of yacc.c  */
    8165 #line 2187 "parser.yy"
     8298  case 573:
     8299
     8300/* Line 1806 of yacc.c  */
     8301#line 2191 "parser.yy"
    81668302    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    81678303    break;
    81688304
    8169   case 573:
    8170 
    8171 /* Line 1806 of yacc.c  */
    8172 #line 2189 "parser.yy"
     8305  case 574:
     8306
     8307/* Line 1806 of yacc.c  */
     8308#line 2193 "parser.yy"
    81738309    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81748310    break;
    81758311
    8176   case 574:
    8177 
    8178 /* Line 1806 of yacc.c  */
    8179 #line 2191 "parser.yy"
     8312  case 575:
     8313
     8314/* Line 1806 of yacc.c  */
     8315#line 2195 "parser.yy"
    81808316    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81818317    break;
    81828318
    8183   case 575:
    8184 
    8185 /* Line 1806 of yacc.c  */
    8186 #line 2193 "parser.yy"
     8319  case 576:
     8320
     8321/* Line 1806 of yacc.c  */
     8322#line 2197 "parser.yy"
    81878323    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81888324    break;
    81898325
    8190   case 576:
    8191 
    8192 /* Line 1806 of yacc.c  */
    8193 #line 2198 "parser.yy"
     8326  case 577:
     8327
     8328/* Line 1806 of yacc.c  */
     8329#line 2202 "parser.yy"
    81948330    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81958331    break;
    81968332
    8197   case 577:
    8198 
    8199 /* Line 1806 of yacc.c  */
    8200 #line 2200 "parser.yy"
     8333  case 578:
     8334
     8335/* Line 1806 of yacc.c  */
     8336#line 2204 "parser.yy"
    82018337    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82028338    break;
    82038339
    8204   case 578:
    8205 
    8206 /* Line 1806 of yacc.c  */
    8207 #line 2210 "parser.yy"
    8208     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8209     break;
    8210 
    8211   case 580:
     8340  case 579:
    82128341
    82138342/* Line 1806 of yacc.c  */
     
    82198348
    82208349/* Line 1806 of yacc.c  */
    8221 #line 2218 "parser.yy"
     8350#line 2216 "parser.yy"
     8351    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8352    break;
     8353
     8354  case 582:
     8355
     8356/* Line 1806 of yacc.c  */
     8357#line 2221 "parser.yy"
    82228358    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    82238359    break;
    82248360
    8225   case 582:
    8226 
    8227 /* Line 1806 of yacc.c  */
    8228 #line 2220 "parser.yy"
     8361  case 583:
     8362
     8363/* Line 1806 of yacc.c  */
     8364#line 2223 "parser.yy"
    82298365    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    82308366    break;
    82318367
    8232   case 583:
    8233 
    8234 /* Line 1806 of yacc.c  */
    8235 #line 2222 "parser.yy"
     8368  case 584:
     8369
     8370/* Line 1806 of yacc.c  */
     8371#line 2225 "parser.yy"
    82368372    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82378373    break;
    82388374
    8239   case 584:
    8240 
    8241 /* Line 1806 of yacc.c  */
    8242 #line 2227 "parser.yy"
     8375  case 585:
     8376
     8377/* Line 1806 of yacc.c  */
     8378#line 2230 "parser.yy"
    82438379    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82448380    break;
    82458381
    8246   case 585:
    8247 
    8248 /* Line 1806 of yacc.c  */
    8249 #line 2229 "parser.yy"
     8382  case 586:
     8383
     8384/* Line 1806 of yacc.c  */
     8385#line 2232 "parser.yy"
    82508386    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82518387    break;
    82528388
    8253   case 586:
    8254 
    8255 /* Line 1806 of yacc.c  */
    8256 #line 2231 "parser.yy"
     8389  case 587:
     8390
     8391/* Line 1806 of yacc.c  */
     8392#line 2234 "parser.yy"
    82578393    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82588394    break;
    82598395
    8260   case 587:
    8261 
    8262 /* Line 1806 of yacc.c  */
    8263 #line 2236 "parser.yy"
     8396  case 588:
     8397
     8398/* Line 1806 of yacc.c  */
     8399#line 2239 "parser.yy"
    82648400    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82658401    break;
    82668402
    8267   case 588:
    8268 
    8269 /* Line 1806 of yacc.c  */
    8270 #line 2238 "parser.yy"
     8403  case 589:
     8404
     8405/* Line 1806 of yacc.c  */
     8406#line 2241 "parser.yy"
    82718407    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82728408    break;
    82738409
    8274   case 589:
    8275 
    8276 /* Line 1806 of yacc.c  */
    8277 #line 2240 "parser.yy"
     8410  case 590:
     8411
     8412/* Line 1806 of yacc.c  */
     8413#line 2243 "parser.yy"
    82788414    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82798415    break;
    82808416
    8281   case 593:
    8282 
    8283 /* Line 1806 of yacc.c  */
    8284 #line 2255 "parser.yy"
     8417  case 594:
     8418
     8419/* Line 1806 of yacc.c  */
     8420#line 2258 "parser.yy"
    82858421    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    82868422    break;
    82878423
    8288   case 594:
    8289 
    8290 /* Line 1806 of yacc.c  */
    8291 #line 2257 "parser.yy"
     8424  case 595:
     8425
     8426/* Line 1806 of yacc.c  */
     8427#line 2260 "parser.yy"
    82928428    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    82938429    break;
    82948430
    8295   case 595:
    8296 
    8297 /* Line 1806 of yacc.c  */
    8298 #line 2259 "parser.yy"
     8431  case 596:
     8432
     8433/* Line 1806 of yacc.c  */
     8434#line 2262 "parser.yy"
    82998435    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83008436    break;
    83018437
    8302   case 596:
    8303 
    8304 /* Line 1806 of yacc.c  */
    8305 #line 2264 "parser.yy"
     8438  case 597:
     8439
     8440/* Line 1806 of yacc.c  */
     8441#line 2267 "parser.yy"
    83068442    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83078443    break;
    83088444
    8309   case 597:
    8310 
    8311 /* Line 1806 of yacc.c  */
    8312 #line 2266 "parser.yy"
     8445  case 598:
     8446
     8447/* Line 1806 of yacc.c  */
     8448#line 2269 "parser.yy"
    83138449    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83148450    break;
    83158451
    8316   case 598:
    8317 
    8318 /* Line 1806 of yacc.c  */
    8319 #line 2268 "parser.yy"
     8452  case 599:
     8453
     8454/* Line 1806 of yacc.c  */
     8455#line 2271 "parser.yy"
    83208456    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83218457    break;
    83228458
    8323   case 599:
    8324 
    8325 /* Line 1806 of yacc.c  */
    8326 #line 2273 "parser.yy"
     8459  case 600:
     8460
     8461/* Line 1806 of yacc.c  */
     8462#line 2276 "parser.yy"
    83278463    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83288464    break;
    83298465
    8330   case 600:
    8331 
    8332 /* Line 1806 of yacc.c  */
    8333 #line 2275 "parser.yy"
     8466  case 601:
     8467
     8468/* Line 1806 of yacc.c  */
     8469#line 2278 "parser.yy"
    83348470    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83358471    break;
    83368472
    8337   case 601:
    8338 
    8339 /* Line 1806 of yacc.c  */
    8340 #line 2277 "parser.yy"
     8473  case 602:
     8474
     8475/* Line 1806 of yacc.c  */
     8476#line 2280 "parser.yy"
    83418477    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83428478    break;
    83438479
    8344   case 602:
    8345 
    8346 /* Line 1806 of yacc.c  */
    8347 #line 2292 "parser.yy"
    8348     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8349     break;
    8350 
    8351   case 604:
     8480  case 603:
    83528481
    83538482/* Line 1806 of yacc.c  */
     
    83598488
    83608489/* Line 1806 of yacc.c  */
    8361 #line 2297 "parser.yy"
     8490#line 2298 "parser.yy"
    83628491    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83638492    break;
    83648493
    8365   case 607:
    8366 
    8367 /* Line 1806 of yacc.c  */
    8368 #line 2303 "parser.yy"
     8494  case 606:
     8495
     8496/* Line 1806 of yacc.c  */
     8497#line 2300 "parser.yy"
     8498    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8499    break;
     8500
     8501  case 608:
     8502
     8503/* Line 1806 of yacc.c  */
     8504#line 2306 "parser.yy"
    83698505    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83708506    break;
    83718507
    8372   case 608:
    8373 
    8374 /* Line 1806 of yacc.c  */
    8375 #line 2308 "parser.yy"
     8508  case 609:
     8509
     8510/* Line 1806 of yacc.c  */
     8511#line 2311 "parser.yy"
    83768512    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83778513    break;
    83788514
    8379   case 609:
    8380 
    8381 /* Line 1806 of yacc.c  */
    8382 #line 2310 "parser.yy"
     8515  case 610:
     8516
     8517/* Line 1806 of yacc.c  */
     8518#line 2313 "parser.yy"
    83838519    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83848520    break;
    83858521
    8386   case 610:
    8387 
    8388 /* Line 1806 of yacc.c  */
    8389 #line 2312 "parser.yy"
     8522  case 611:
     8523
     8524/* Line 1806 of yacc.c  */
     8525#line 2315 "parser.yy"
    83908526    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83918527    break;
    83928528
    8393   case 611:
    8394 
    8395 /* Line 1806 of yacc.c  */
    8396 #line 2317 "parser.yy"
     8529  case 612:
     8530
     8531/* Line 1806 of yacc.c  */
     8532#line 2320 "parser.yy"
    83978533    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83988534    break;
    83998535
    8400   case 612:
    8401 
    8402 /* Line 1806 of yacc.c  */
    8403 #line 2319 "parser.yy"
     8536  case 613:
     8537
     8538/* Line 1806 of yacc.c  */
     8539#line 2322 "parser.yy"
    84048540    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84058541    break;
    84068542
    8407   case 613:
    8408 
    8409 /* Line 1806 of yacc.c  */
    8410 #line 2321 "parser.yy"
     8543  case 614:
     8544
     8545/* Line 1806 of yacc.c  */
     8546#line 2324 "parser.yy"
    84118547    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84128548    break;
    84138549
    8414   case 614:
    8415 
    8416 /* Line 1806 of yacc.c  */
    8417 #line 2323 "parser.yy"
     8550  case 615:
     8551
     8552/* Line 1806 of yacc.c  */
     8553#line 2326 "parser.yy"
    84188554    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84198555    break;
    84208556
    8421   case 615:
    8422 
    8423 /* Line 1806 of yacc.c  */
    8424 #line 2328 "parser.yy"
     8557  case 616:
     8558
     8559/* Line 1806 of yacc.c  */
     8560#line 2331 "parser.yy"
    84258561    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84268562    break;
    84278563
    8428   case 616:
    8429 
    8430 /* Line 1806 of yacc.c  */
    8431 #line 2330 "parser.yy"
     8564  case 617:
     8565
     8566/* Line 1806 of yacc.c  */
     8567#line 2333 "parser.yy"
    84328568    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84338569    break;
    84348570
    8435   case 617:
    8436 
    8437 /* Line 1806 of yacc.c  */
    8438 #line 2332 "parser.yy"
     8571  case 618:
     8572
     8573/* Line 1806 of yacc.c  */
     8574#line 2335 "parser.yy"
    84398575    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84408576    break;
    84418577
    8442   case 618:
    8443 
    8444 /* Line 1806 of yacc.c  */
    8445 #line 2342 "parser.yy"
    8446     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8447     break;
    8448 
    8449   case 620:
     8578  case 619:
    84508579
    84518580/* Line 1806 of yacc.c  */
     
    84578586
    84588587/* Line 1806 of yacc.c  */
    8459 #line 2347 "parser.yy"
     8588#line 2348 "parser.yy"
    84608589    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84618590    break;
     
    84648593
    84658594/* Line 1806 of yacc.c  */
    8466 #line 2352 "parser.yy"
     8595#line 2350 "parser.yy"
     8596    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8597    break;
     8598
     8599  case 623:
     8600
     8601/* Line 1806 of yacc.c  */
     8602#line 2355 "parser.yy"
    84678603    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84688604    break;
    84698605
    8470   case 623:
    8471 
    8472 /* Line 1806 of yacc.c  */
    8473 #line 2354 "parser.yy"
     8606  case 624:
     8607
     8608/* Line 1806 of yacc.c  */
     8609#line 2357 "parser.yy"
    84748610    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84758611    break;
    84768612
    8477   case 624:
    8478 
    8479 /* Line 1806 of yacc.c  */
    8480 #line 2356 "parser.yy"
     8613  case 625:
     8614
     8615/* Line 1806 of yacc.c  */
     8616#line 2359 "parser.yy"
    84818617    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84828618    break;
    84838619
    8484   case 625:
    8485 
    8486 /* Line 1806 of yacc.c  */
    8487 #line 2361 "parser.yy"
     8620  case 626:
     8621
     8622/* Line 1806 of yacc.c  */
     8623#line 2364 "parser.yy"
    84888624    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84898625    break;
    84908626
    8491   case 626:
    8492 
    8493 /* Line 1806 of yacc.c  */
    8494 #line 2363 "parser.yy"
     8627  case 627:
     8628
     8629/* Line 1806 of yacc.c  */
     8630#line 2366 "parser.yy"
    84958631    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84968632    break;
    84978633
    8498   case 627:
    8499 
    8500 /* Line 1806 of yacc.c  */
    8501 #line 2365 "parser.yy"
     8634  case 628:
     8635
     8636/* Line 1806 of yacc.c  */
     8637#line 2368 "parser.yy"
    85028638    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85038639    break;
    85048640
    8505   case 628:
    8506 
    8507 /* Line 1806 of yacc.c  */
    8508 #line 2367 "parser.yy"
     8641  case 629:
     8642
     8643/* Line 1806 of yacc.c  */
     8644#line 2370 "parser.yy"
    85098645    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85108646    break;
    85118647
    8512   case 629:
    8513 
    8514 /* Line 1806 of yacc.c  */
    8515 #line 2372 "parser.yy"
     8648  case 630:
     8649
     8650/* Line 1806 of yacc.c  */
     8651#line 2375 "parser.yy"
    85168652    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85178653    break;
    85188654
    8519   case 630:
    8520 
    8521 /* Line 1806 of yacc.c  */
    8522 #line 2374 "parser.yy"
     8655  case 631:
     8656
     8657/* Line 1806 of yacc.c  */
     8658#line 2377 "parser.yy"
    85238659    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85248660    break;
    85258661
    8526   case 631:
    8527 
    8528 /* Line 1806 of yacc.c  */
    8529 #line 2376 "parser.yy"
     8662  case 632:
     8663
     8664/* Line 1806 of yacc.c  */
     8665#line 2379 "parser.yy"
    85308666    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85318667    break;
    85328668
    8533   case 632:
    8534 
    8535 /* Line 1806 of yacc.c  */
    8536 #line 2407 "parser.yy"
    8537     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8538     break;
    8539 
    8540   case 634:
     8669  case 633:
    85418670
    85428671/* Line 1806 of yacc.c  */
     
    85488677
    85498678/* Line 1806 of yacc.c  */
    8550 #line 2412 "parser.yy"
     8679#line 2413 "parser.yy"
    85518680    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85528681    break;
     
    85558684
    85568685/* Line 1806 of yacc.c  */
    8557 #line 2417 "parser.yy"
     8686#line 2415 "parser.yy"
     8687    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8688    break;
     8689
     8690  case 637:
     8691
     8692/* Line 1806 of yacc.c  */
     8693#line 2420 "parser.yy"
    85588694    {
    85598695                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85628698    break;
    85638699
    8564   case 637:
    8565 
    8566 /* Line 1806 of yacc.c  */
    8567 #line 2422 "parser.yy"
     8700  case 638:
     8701
     8702/* Line 1806 of yacc.c  */
     8703#line 2425 "parser.yy"
    85688704    {
    85698705                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85728708    break;
    85738709
    8574   case 638:
    8575 
    8576 /* Line 1806 of yacc.c  */
    8577 #line 2430 "parser.yy"
     8710  case 639:
     8711
     8712/* Line 1806 of yacc.c  */
     8713#line 2433 "parser.yy"
    85788714    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85798715    break;
    85808716
    8581   case 639:
    8582 
    8583 /* Line 1806 of yacc.c  */
    8584 #line 2432 "parser.yy"
     8717  case 640:
     8718
     8719/* Line 1806 of yacc.c  */
     8720#line 2435 "parser.yy"
    85858721    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85868722    break;
    85878723
    8588   case 640:
    8589 
    8590 /* Line 1806 of yacc.c  */
    8591 #line 2434 "parser.yy"
     8724  case 641:
     8725
     8726/* Line 1806 of yacc.c  */
     8727#line 2437 "parser.yy"
    85928728    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85938729    break;
    85948730
    8595   case 641:
    8596 
    8597 /* Line 1806 of yacc.c  */
    8598 #line 2439 "parser.yy"
     8731  case 642:
     8732
     8733/* Line 1806 of yacc.c  */
     8734#line 2442 "parser.yy"
    85998735    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    86008736    break;
    86018737
    8602   case 642:
    8603 
    8604 /* Line 1806 of yacc.c  */
    8605 #line 2441 "parser.yy"
     8738  case 643:
     8739
     8740/* Line 1806 of yacc.c  */
     8741#line 2444 "parser.yy"
    86068742    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86078743    break;
    86088744
    8609   case 643:
    8610 
    8611 /* Line 1806 of yacc.c  */
    8612 #line 2446 "parser.yy"
     8745  case 644:
     8746
     8747/* Line 1806 of yacc.c  */
     8748#line 2449 "parser.yy"
    86138749    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    86148750    break;
    86158751
    8616   case 644:
    8617 
    8618 /* Line 1806 of yacc.c  */
    8619 #line 2448 "parser.yy"
     8752  case 645:
     8753
     8754/* Line 1806 of yacc.c  */
     8755#line 2451 "parser.yy"
    86208756    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86218757    break;
    86228758
    8623   case 646:
    8624 
    8625 /* Line 1806 of yacc.c  */
    8626 #line 2463 "parser.yy"
     8759  case 647:
     8760
     8761/* Line 1806 of yacc.c  */
     8762#line 2466 "parser.yy"
    86278763    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86288764    break;
    86298765
    8630   case 647:
    8631 
    8632 /* Line 1806 of yacc.c  */
    8633 #line 2465 "parser.yy"
     8766  case 648:
     8767
     8768/* Line 1806 of yacc.c  */
     8769#line 2468 "parser.yy"
    86348770    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86358771    break;
    86368772
    8637   case 648:
    8638 
    8639 /* Line 1806 of yacc.c  */
    8640 #line 2470 "parser.yy"
     8773  case 649:
     8774
     8775/* Line 1806 of yacc.c  */
     8776#line 2473 "parser.yy"
    86418777    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86428778    break;
    86438779
    8644   case 649:
    8645 
    8646 /* Line 1806 of yacc.c  */
    8647 #line 2472 "parser.yy"
     8780  case 650:
     8781
     8782/* Line 1806 of yacc.c  */
     8783#line 2475 "parser.yy"
    86488784    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86498785    break;
    86508786
    8651   case 650:
    8652 
    8653 /* Line 1806 of yacc.c  */
    8654 #line 2474 "parser.yy"
     8787  case 651:
     8788
     8789/* Line 1806 of yacc.c  */
     8790#line 2477 "parser.yy"
    86558791    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86568792    break;
    86578793
    8658   case 651:
    8659 
    8660 /* Line 1806 of yacc.c  */
    8661 #line 2476 "parser.yy"
     8794  case 652:
     8795
     8796/* Line 1806 of yacc.c  */
     8797#line 2479 "parser.yy"
    86628798    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86638799    break;
    86648800
    8665   case 652:
    8666 
    8667 /* Line 1806 of yacc.c  */
    8668 #line 2478 "parser.yy"
     8801  case 653:
     8802
     8803/* Line 1806 of yacc.c  */
     8804#line 2481 "parser.yy"
    86698805    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86708806    break;
    86718807
    8672   case 654:
    8673 
    8674 /* Line 1806 of yacc.c  */
    8675 #line 2484 "parser.yy"
     8808  case 655:
     8809
     8810/* Line 1806 of yacc.c  */
     8811#line 2487 "parser.yy"
    86768812    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86778813    break;
    86788814
    8679   case 655:
    8680 
    8681 /* Line 1806 of yacc.c  */
    8682 #line 2486 "parser.yy"
     8815  case 656:
     8816
     8817/* Line 1806 of yacc.c  */
     8818#line 2489 "parser.yy"
    86838819    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86848820    break;
    86858821
    8686   case 656:
    8687 
    8688 /* Line 1806 of yacc.c  */
    8689 #line 2488 "parser.yy"
     8822  case 657:
     8823
     8824/* Line 1806 of yacc.c  */
     8825#line 2491 "parser.yy"
    86908826    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86918827    break;
    86928828
    8693   case 657:
    8694 
    8695 /* Line 1806 of yacc.c  */
    8696 #line 2493 "parser.yy"
     8829  case 658:
     8830
     8831/* Line 1806 of yacc.c  */
     8832#line 2496 "parser.yy"
    86978833    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    86988834    break;
    86998835
    8700   case 658:
    8701 
    8702 /* Line 1806 of yacc.c  */
    8703 #line 2495 "parser.yy"
     8836  case 659:
     8837
     8838/* Line 1806 of yacc.c  */
     8839#line 2498 "parser.yy"
    87048840    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87058841    break;
    87068842
    8707   case 659:
    8708 
    8709 /* Line 1806 of yacc.c  */
    8710 #line 2497 "parser.yy"
     8843  case 660:
     8844
     8845/* Line 1806 of yacc.c  */
     8846#line 2500 "parser.yy"
    87118847    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87128848    break;
    87138849
    8714   case 660:
    8715 
    8716 /* Line 1806 of yacc.c  */
    8717 #line 2503 "parser.yy"
     8850  case 661:
     8851
     8852/* Line 1806 of yacc.c  */
     8853#line 2506 "parser.yy"
    87188854    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    87198855    break;
    87208856
    8721   case 661:
    8722 
    8723 /* Line 1806 of yacc.c  */
    8724 #line 2505 "parser.yy"
     8857  case 662:
     8858
     8859/* Line 1806 of yacc.c  */
     8860#line 2508 "parser.yy"
    87258861    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    87268862    break;
    87278863
    8728   case 663:
    8729 
    8730 /* Line 1806 of yacc.c  */
    8731 #line 2511 "parser.yy"
     8864  case 664:
     8865
     8866/* Line 1806 of yacc.c  */
     8867#line 2514 "parser.yy"
    87328868    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    87338869    break;
    87348870
    8735   case 664:
    8736 
    8737 /* Line 1806 of yacc.c  */
    8738 #line 2513 "parser.yy"
     8871  case 665:
     8872
     8873/* Line 1806 of yacc.c  */
     8874#line 2516 "parser.yy"
    87398875    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    87408876    break;
    87418877
    8742   case 665:
    8743 
    8744 /* Line 1806 of yacc.c  */
    8745 #line 2515 "parser.yy"
     8878  case 666:
     8879
     8880/* Line 1806 of yacc.c  */
     8881#line 2518 "parser.yy"
    87468882    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    87478883    break;
    87488884
    8749   case 666:
    8750 
    8751 /* Line 1806 of yacc.c  */
    8752 #line 2517 "parser.yy"
     8885  case 667:
     8886
     8887/* Line 1806 of yacc.c  */
     8888#line 2520 "parser.yy"
    87538889    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    87548890    break;
    87558891
    8756   case 668:
    8757 
    8758 /* Line 1806 of yacc.c  */
    8759 #line 2532 "parser.yy"
     8892  case 669:
     8893
     8894/* Line 1806 of yacc.c  */
     8895#line 2535 "parser.yy"
    87608896    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87618897    break;
    87628898
    8763   case 669:
    8764 
    8765 /* Line 1806 of yacc.c  */
    8766 #line 2534 "parser.yy"
     8899  case 670:
     8900
     8901/* Line 1806 of yacc.c  */
     8902#line 2537 "parser.yy"
    87678903    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87688904    break;
    87698905
    8770   case 670:
    8771 
    8772 /* Line 1806 of yacc.c  */
    8773 #line 2539 "parser.yy"
     8906  case 671:
     8907
     8908/* Line 1806 of yacc.c  */
     8909#line 2542 "parser.yy"
    87748910    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87758911    break;
    87768912
    8777   case 671:
    8778 
    8779 /* Line 1806 of yacc.c  */
    8780 #line 2541 "parser.yy"
     8913  case 672:
     8914
     8915/* Line 1806 of yacc.c  */
     8916#line 2544 "parser.yy"
    87818917    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87828918    break;
    87838919
    8784   case 672:
    8785 
    8786 /* Line 1806 of yacc.c  */
    8787 #line 2543 "parser.yy"
     8920  case 673:
     8921
     8922/* Line 1806 of yacc.c  */
     8923#line 2546 "parser.yy"
    87888924    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87898925    break;
    87908926
    8791   case 673:
    8792 
    8793 /* Line 1806 of yacc.c  */
    8794 #line 2545 "parser.yy"
     8927  case 674:
     8928
     8929/* Line 1806 of yacc.c  */
     8930#line 2548 "parser.yy"
    87958931    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87968932    break;
    87978933
    8798   case 674:
    8799 
    8800 /* Line 1806 of yacc.c  */
    8801 #line 2547 "parser.yy"
     8934  case 675:
     8935
     8936/* Line 1806 of yacc.c  */
     8937#line 2550 "parser.yy"
    88028938    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88038939    break;
    88048940
    8805   case 676:
    8806 
    8807 /* Line 1806 of yacc.c  */
    8808 #line 2553 "parser.yy"
     8941  case 677:
     8942
     8943/* Line 1806 of yacc.c  */
     8944#line 2556 "parser.yy"
    88098945    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88108946    break;
    88118947
    8812   case 677:
    8813 
    8814 /* Line 1806 of yacc.c  */
    8815 #line 2555 "parser.yy"
     8948  case 678:
     8949
     8950/* Line 1806 of yacc.c  */
     8951#line 2558 "parser.yy"
    88168952    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88178953    break;
    88188954
    8819   case 678:
    8820 
    8821 /* Line 1806 of yacc.c  */
    8822 #line 2557 "parser.yy"
     8955  case 679:
     8956
     8957/* Line 1806 of yacc.c  */
     8958#line 2560 "parser.yy"
    88238959    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88248960    break;
    88258961
    8826   case 679:
    8827 
    8828 /* Line 1806 of yacc.c  */
    8829 #line 2562 "parser.yy"
     8962  case 680:
     8963
     8964/* Line 1806 of yacc.c  */
     8965#line 2565 "parser.yy"
    88308966    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    88318967    break;
    88328968
    8833   case 680:
    8834 
    8835 /* Line 1806 of yacc.c  */
    8836 #line 2564 "parser.yy"
     8969  case 681:
     8970
     8971/* Line 1806 of yacc.c  */
     8972#line 2567 "parser.yy"
    88378973    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    88388974    break;
    88398975
    8840   case 681:
    8841 
    8842 /* Line 1806 of yacc.c  */
    8843 #line 2566 "parser.yy"
     8976  case 682:
     8977
     8978/* Line 1806 of yacc.c  */
     8979#line 2569 "parser.yy"
    88448980    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88458981    break;
    88468982
    8847   case 683:
    8848 
    8849 /* Line 1806 of yacc.c  */
    8850 #line 2573 "parser.yy"
     8983  case 684:
     8984
     8985/* Line 1806 of yacc.c  */
     8986#line 2576 "parser.yy"
    88518987    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    88528988    break;
    88538989
    8854   case 685:
    8855 
    8856 /* Line 1806 of yacc.c  */
    8857 #line 2584 "parser.yy"
     8990  case 686:
     8991
     8992/* Line 1806 of yacc.c  */
     8993#line 2587 "parser.yy"
    88588994    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    88598995    break;
    88608996
    8861   case 686:
    8862 
    8863 /* Line 1806 of yacc.c  */
    8864 #line 2587 "parser.yy"
     8997  case 687:
     8998
     8999/* Line 1806 of yacc.c  */
     9000#line 2590 "parser.yy"
    88659001    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    88669002    break;
    88679003
    8868   case 687:
    8869 
    8870 /* Line 1806 of yacc.c  */
    8871 #line 2589 "parser.yy"
     9004  case 688:
     9005
     9006/* Line 1806 of yacc.c  */
     9007#line 2592 "parser.yy"
    88729008    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    88739009    break;
    88749010
    8875   case 688:
    8876 
    8877 /* Line 1806 of yacc.c  */
    8878 #line 2592 "parser.yy"
     9011  case 689:
     9012
     9013/* Line 1806 of yacc.c  */
     9014#line 2595 "parser.yy"
    88799015    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88809016    break;
    88819017
    8882   case 689:
    8883 
    8884 /* Line 1806 of yacc.c  */
    8885 #line 2594 "parser.yy"
     9018  case 690:
     9019
     9020/* Line 1806 of yacc.c  */
     9021#line 2597 "parser.yy"
    88869022    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    88879023    break;
    88889024
    8889   case 690:
    8890 
    8891 /* Line 1806 of yacc.c  */
    8892 #line 2596 "parser.yy"
     9025  case 691:
     9026
     9027/* Line 1806 of yacc.c  */
     9028#line 2599 "parser.yy"
    88939029    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    88949030    break;
    88959031
    8896   case 692:
    8897 
    8898 /* Line 1806 of yacc.c  */
    8899 #line 2610 "parser.yy"
     9032  case 693:
     9033
     9034/* Line 1806 of yacc.c  */
     9035#line 2613 "parser.yy"
    89009036    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    89019037    break;
    89029038
    8903   case 693:
    8904 
    8905 /* Line 1806 of yacc.c  */
    8906 #line 2612 "parser.yy"
     9039  case 694:
     9040
     9041/* Line 1806 of yacc.c  */
     9042#line 2615 "parser.yy"
    89079043    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    89089044    break;
    89099045
    8910   case 694:
    8911 
    8912 /* Line 1806 of yacc.c  */
    8913 #line 2617 "parser.yy"
     9046  case 695:
     9047
     9048/* Line 1806 of yacc.c  */
     9049#line 2620 "parser.yy"
    89149050    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    89159051    break;
    89169052
    8917   case 695:
    8918 
    8919 /* Line 1806 of yacc.c  */
    8920 #line 2619 "parser.yy"
     9053  case 696:
     9054
     9055/* Line 1806 of yacc.c  */
     9056#line 2622 "parser.yy"
    89219057    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    89229058    break;
    89239059
    8924   case 696:
    8925 
    8926 /* Line 1806 of yacc.c  */
    8927 #line 2621 "parser.yy"
     9060  case 697:
     9061
     9062/* Line 1806 of yacc.c  */
     9063#line 2624 "parser.yy"
    89289064    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    89299065    break;
    89309066
    8931   case 697:
    8932 
    8933 /* Line 1806 of yacc.c  */
    8934 #line 2623 "parser.yy"
     9067  case 698:
     9068
     9069/* Line 1806 of yacc.c  */
     9070#line 2626 "parser.yy"
    89359071    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    89369072    break;
    89379073
    8938   case 698:
    8939 
    8940 /* Line 1806 of yacc.c  */
    8941 #line 2625 "parser.yy"
     9074  case 699:
     9075
     9076/* Line 1806 of yacc.c  */
     9077#line 2628 "parser.yy"
    89429078    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    89439079    break;
    89449080
    8945   case 700:
    8946 
    8947 /* Line 1806 of yacc.c  */
    8948 #line 2631 "parser.yy"
     9081  case 701:
     9082
     9083/* Line 1806 of yacc.c  */
     9084#line 2634 "parser.yy"
    89499085    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    89509086    break;
    89519087
    8952   case 701:
    8953 
    8954 /* Line 1806 of yacc.c  */
    8955 #line 2633 "parser.yy"
     9088  case 702:
     9089
     9090/* Line 1806 of yacc.c  */
     9091#line 2636 "parser.yy"
    89569092    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    89579093    break;
    89589094
    8959   case 702:
    8960 
    8961 /* Line 1806 of yacc.c  */
    8962 #line 2635 "parser.yy"
     9095  case 703:
     9096
     9097/* Line 1806 of yacc.c  */
     9098#line 2638 "parser.yy"
    89639099    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    89649100    break;
    89659101
    8966   case 703:
    8967 
    8968 /* Line 1806 of yacc.c  */
    8969 #line 2640 "parser.yy"
     9102  case 704:
     9103
     9104/* Line 1806 of yacc.c  */
     9105#line 2643 "parser.yy"
    89709106    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    89719107    break;
    89729108
    8973   case 704:
    8974 
    8975 /* Line 1806 of yacc.c  */
    8976 #line 2642 "parser.yy"
     9109  case 705:
     9110
     9111/* Line 1806 of yacc.c  */
     9112#line 2645 "parser.yy"
    89779113    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    89789114    break;
    89799115
    8980   case 707:
    8981 
    8982 /* Line 1806 of yacc.c  */
    8983 #line 2652 "parser.yy"
     9116  case 708:
     9117
     9118/* Line 1806 of yacc.c  */
     9119#line 2655 "parser.yy"
    89849120    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89859121    break;
    89869122
    8987   case 710:
    8988 
    8989 /* Line 1806 of yacc.c  */
    8990 #line 2662 "parser.yy"
     9123  case 711:
     9124
     9125/* Line 1806 of yacc.c  */
     9126#line 2665 "parser.yy"
    89919127    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89929128    break;
    89939129
    8994   case 711:
    8995 
    8996 /* Line 1806 of yacc.c  */
    8997 #line 2664 "parser.yy"
     9130  case 712:
     9131
     9132/* Line 1806 of yacc.c  */
     9133#line 2667 "parser.yy"
    89989134    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89999135    break;
    90009136
    9001   case 712:
    9002 
    9003 /* Line 1806 of yacc.c  */
    9004 #line 2666 "parser.yy"
     9137  case 713:
     9138
     9139/* Line 1806 of yacc.c  */
     9140#line 2669 "parser.yy"
    90059141    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90069142    break;
    90079143
    9008   case 713:
    9009 
    9010 /* Line 1806 of yacc.c  */
    9011 #line 2668 "parser.yy"
     9144  case 714:
     9145
     9146/* Line 1806 of yacc.c  */
     9147#line 2671 "parser.yy"
    90129148    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90139149    break;
    90149150
    9015   case 714:
    9016 
    9017 /* Line 1806 of yacc.c  */
    9018 #line 2670 "parser.yy"
     9151  case 715:
     9152
     9153/* Line 1806 of yacc.c  */
     9154#line 2673 "parser.yy"
    90199155    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90209156    break;
    90219157
    9022   case 715:
    9023 
    9024 /* Line 1806 of yacc.c  */
    9025 #line 2672 "parser.yy"
     9158  case 716:
     9159
     9160/* Line 1806 of yacc.c  */
     9161#line 2675 "parser.yy"
    90269162    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90279163    break;
    90289164
    9029   case 716:
    9030 
    9031 /* Line 1806 of yacc.c  */
    9032 #line 2679 "parser.yy"
     9165  case 717:
     9166
     9167/* Line 1806 of yacc.c  */
     9168#line 2682 "parser.yy"
    90339169    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90349170    break;
    90359171
    9036   case 717:
    9037 
    9038 /* Line 1806 of yacc.c  */
    9039 #line 2681 "parser.yy"
     9172  case 718:
     9173
     9174/* Line 1806 of yacc.c  */
     9175#line 2684 "parser.yy"
    90409176    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90419177    break;
    90429178
    9043   case 718:
    9044 
    9045 /* Line 1806 of yacc.c  */
    9046 #line 2683 "parser.yy"
     9179  case 719:
     9180
     9181/* Line 1806 of yacc.c  */
     9182#line 2686 "parser.yy"
    90479183    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90489184    break;
    90499185
    9050   case 719:
    9051 
    9052 /* Line 1806 of yacc.c  */
    9053 #line 2685 "parser.yy"
     9186  case 720:
     9187
     9188/* Line 1806 of yacc.c  */
     9189#line 2688 "parser.yy"
    90549190    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    90559191    break;
    90569192
    9057   case 720:
    9058 
    9059 /* Line 1806 of yacc.c  */
    9060 #line 2687 "parser.yy"
     9193  case 721:
     9194
     9195/* Line 1806 of yacc.c  */
     9196#line 2690 "parser.yy"
    90619197    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90629198    break;
    90639199
    9064   case 721:
    9065 
    9066 /* Line 1806 of yacc.c  */
    9067 #line 2689 "parser.yy"
     9200  case 722:
     9201
     9202/* Line 1806 of yacc.c  */
     9203#line 2692 "parser.yy"
    90689204    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90699205    break;
    90709206
    9071   case 722:
    9072 
    9073 /* Line 1806 of yacc.c  */
    9074 #line 2691 "parser.yy"
     9207  case 723:
     9208
     9209/* Line 1806 of yacc.c  */
     9210#line 2694 "parser.yy"
    90759211    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90769212    break;
    90779213
    9078   case 723:
    9079 
    9080 /* Line 1806 of yacc.c  */
    9081 #line 2693 "parser.yy"
     9214  case 724:
     9215
     9216/* Line 1806 of yacc.c  */
     9217#line 2696 "parser.yy"
    90829218    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90839219    break;
    90849220
    9085   case 724:
    9086 
    9087 /* Line 1806 of yacc.c  */
    9088 #line 2695 "parser.yy"
     9221  case 725:
     9222
     9223/* Line 1806 of yacc.c  */
     9224#line 2698 "parser.yy"
    90899225    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    90909226    break;
    90919227
    9092   case 725:
    9093 
    9094 /* Line 1806 of yacc.c  */
    9095 #line 2697 "parser.yy"
     9228  case 726:
     9229
     9230/* Line 1806 of yacc.c  */
     9231#line 2700 "parser.yy"
    90969232    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90979233    break;
    90989234
    9099   case 726:
    9100 
    9101 /* Line 1806 of yacc.c  */
    9102 #line 2702 "parser.yy"
     9235  case 727:
     9236
     9237/* Line 1806 of yacc.c  */
     9238#line 2705 "parser.yy"
    91039239    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    91049240    break;
    91059241
    9106   case 727:
    9107 
    9108 /* Line 1806 of yacc.c  */
    9109 #line 2704 "parser.yy"
     9242  case 728:
     9243
     9244/* Line 1806 of yacc.c  */
     9245#line 2707 "parser.yy"
    91109246    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    91119247    break;
    91129248
    9113   case 728:
    9114 
    9115 /* Line 1806 of yacc.c  */
    9116 #line 2709 "parser.yy"
     9249  case 729:
     9250
     9251/* Line 1806 of yacc.c  */
     9252#line 2712 "parser.yy"
    91179253    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    91189254    break;
    91199255
    9120   case 729:
    9121 
    9122 /* Line 1806 of yacc.c  */
    9123 #line 2711 "parser.yy"
     9256  case 730:
     9257
     9258/* Line 1806 of yacc.c  */
     9259#line 2714 "parser.yy"
    91249260    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    91259261    break;
    91269262
    9127   case 731:
    9128 
    9129 /* Line 1806 of yacc.c  */
    9130 #line 2738 "parser.yy"
     9263  case 732:
     9264
     9265/* Line 1806 of yacc.c  */
     9266#line 2741 "parser.yy"
    91319267    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    91329268    break;
    91339269
    9134   case 735:
    9135 
    9136 /* Line 1806 of yacc.c  */
    9137 #line 2749 "parser.yy"
     9270  case 736:
     9271
     9272/* Line 1806 of yacc.c  */
     9273#line 2752 "parser.yy"
    91389274    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91399275    break;
    91409276
    9141   case 736:
    9142 
    9143 /* Line 1806 of yacc.c  */
    9144 #line 2751 "parser.yy"
     9277  case 737:
     9278
     9279/* Line 1806 of yacc.c  */
     9280#line 2754 "parser.yy"
    91459281    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91469282    break;
    91479283
    9148   case 737:
    9149 
    9150 /* Line 1806 of yacc.c  */
    9151 #line 2753 "parser.yy"
     9284  case 738:
     9285
     9286/* Line 1806 of yacc.c  */
     9287#line 2756 "parser.yy"
    91529288    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91539289    break;
    91549290
    9155   case 738:
    9156 
    9157 /* Line 1806 of yacc.c  */
    9158 #line 2755 "parser.yy"
     9291  case 739:
     9292
     9293/* Line 1806 of yacc.c  */
     9294#line 2758 "parser.yy"
    91599295    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91609296    break;
    91619297
    9162   case 739:
    9163 
    9164 /* Line 1806 of yacc.c  */
    9165 #line 2757 "parser.yy"
     9298  case 740:
     9299
     9300/* Line 1806 of yacc.c  */
     9301#line 2760 "parser.yy"
    91669302    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91679303    break;
    91689304
    9169   case 740:
    9170 
    9171 /* Line 1806 of yacc.c  */
    9172 #line 2759 "parser.yy"
     9305  case 741:
     9306
     9307/* Line 1806 of yacc.c  */
     9308#line 2762 "parser.yy"
    91739309    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91749310    break;
    91759311
    9176   case 741:
    9177 
    9178 /* Line 1806 of yacc.c  */
    9179 #line 2766 "parser.yy"
     9312  case 742:
     9313
     9314/* Line 1806 of yacc.c  */
     9315#line 2769 "parser.yy"
    91809316    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    91819317    break;
    91829318
    9183   case 742:
    9184 
    9185 /* Line 1806 of yacc.c  */
    9186 #line 2768 "parser.yy"
     9319  case 743:
     9320
     9321/* Line 1806 of yacc.c  */
     9322#line 2771 "parser.yy"
    91879323    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    91889324    break;
    91899325
    9190   case 743:
    9191 
    9192 /* Line 1806 of yacc.c  */
    9193 #line 2770 "parser.yy"
     9326  case 744:
     9327
     9328/* Line 1806 of yacc.c  */
     9329#line 2773 "parser.yy"
    91949330    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91959331    break;
    91969332
    9197   case 744:
    9198 
    9199 /* Line 1806 of yacc.c  */
    9200 #line 2772 "parser.yy"
     9333  case 745:
     9334
     9335/* Line 1806 of yacc.c  */
     9336#line 2775 "parser.yy"
    92019337    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    92029338    break;
    92039339
    9204   case 745:
    9205 
    9206 /* Line 1806 of yacc.c  */
    9207 #line 2774 "parser.yy"
     9340  case 746:
     9341
     9342/* Line 1806 of yacc.c  */
     9343#line 2777 "parser.yy"
    92089344    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    92099345    break;
    92109346
    9211   case 746:
    9212 
    9213 /* Line 1806 of yacc.c  */
    9214 #line 2776 "parser.yy"
     9347  case 747:
     9348
     9349/* Line 1806 of yacc.c  */
     9350#line 2779 "parser.yy"
    92159351    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    92169352    break;
    92179353
    9218   case 747:
    9219 
    9220 /* Line 1806 of yacc.c  */
    9221 #line 2781 "parser.yy"
     9354  case 748:
     9355
     9356/* Line 1806 of yacc.c  */
     9357#line 2784 "parser.yy"
    92229358    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    92239359    break;
    92249360
    9225   case 748:
    9226 
    9227 /* Line 1806 of yacc.c  */
    9228 #line 2786 "parser.yy"
     9361  case 749:
     9362
     9363/* Line 1806 of yacc.c  */
     9364#line 2789 "parser.yy"
    92299365    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    92309366    break;
    92319367
    9232   case 749:
    9233 
    9234 /* Line 1806 of yacc.c  */
    9235 #line 2788 "parser.yy"
     9368  case 750:
     9369
     9370/* Line 1806 of yacc.c  */
     9371#line 2791 "parser.yy"
    92369372    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    92379373    break;
    92389374
    9239   case 750:
    9240 
    9241 /* Line 1806 of yacc.c  */
    9242 #line 2790 "parser.yy"
     9375  case 751:
     9376
     9377/* Line 1806 of yacc.c  */
     9378#line 2793 "parser.yy"
    92439379    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    92449380    break;
    92459381
    9246   case 753:
    9247 
    9248 /* Line 1806 of yacc.c  */
    9249 #line 2814 "parser.yy"
     9382  case 754:
     9383
     9384/* Line 1806 of yacc.c  */
     9385#line 2817 "parser.yy"
    92509386    { (yyval.en) = 0; }
    92519387    break;
    92529388
    9253   case 754:
    9254 
    9255 /* Line 1806 of yacc.c  */
    9256 #line 2816 "parser.yy"
     9389  case 755:
     9390
     9391/* Line 1806 of yacc.c  */
     9392#line 2819 "parser.yy"
    92579393    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    92589394    break;
     
    92619397
    92629398/* Line 1806 of yacc.c  */
    9263 #line 9264 "Parser/parser.cc"
     9399#line 9400 "Parser/parser.cc"
    92649400      default: break;
    92659401    }
     
    94929628
    94939629/* Line 2067 of yacc.c  */
    9494 #line 2819 "parser.yy"
     9630#line 2822 "parser.yy"
    94959631
    94969632// ----end of grammar----
  • src/Parser/parser.h

    r1b5c81ed rf80e0218  
    262262
    263263/* Line 2068 of yacc.c  */
    264 #line 112 "parser.yy"
     264#line 110 "parser.yy"
    265265
    266266        Token tok;
  • src/Parser/parser.yy

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // cfa.y -- 
    8 // 
     7// cfa.y --
     8//
    99// Author           : Peter A. Buhr
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:58:43 2016
    13 // Update Count     : 1519
    14 // 
     12// Last Modified On : Mon Jun 27 17:47:56 2016
     13// Update Count     : 1627
     14//
    1515
    1616// This grammar is based on the ANSI99/11 C grammar, specifically parts of EXPRESSION and STATEMENTS, and on the C
     
    3131// two levels of extensions. The first extensions cover most of the GCC C extensions, except for:
    3232//
    33 // 1. nested functions
    34 // 2. generalized lvalues
    35 // 3. designation with and without '=' (use ':' instead)
    36 // 4. attributes not allowed in parenthesis of declarator
     33// 1. designation with and without '=' (use ':' instead)
     34// 2. attributes not allowed in parenthesis of declarator
    3735//
    3836// All of the syntactic extensions for GCC C are marked with the comment "GCC". The second extensions are for Cforall
     
    7977%token TYPEOF LABEL                                                                             // GCC
    8078%token ENUM STRUCT UNION
    81 %token OTYPE FTYPE DTYPE TRAIT                                          // CFA
     79%token OTYPE FTYPE DTYPE TRAIT                                                  // CFA
    8280%token SIZEOF OFFSETOF
    8381%token ATTRIBUTE EXTENSION                                                              // GCC
     
    131129%type<constant> constant
    132130%type<en> tuple                                                 tuple_expression_list
    133 %type<en> unary_operator                                assignment_operator
     131%type<en> ptrref_operator                               unary_operator                          assignment_operator
    134132%type<en> primary_expression                    postfix_expression                      unary_expression
    135133%type<en> cast_expression                               multiplicative_expression       additive_expression                     shift_expression
     
    226224%type<decl> typedef type_array typedef_declaration typedef_declaration_specifier typedef_expression
    227225%type<decl> type_function type_parameter_array type_parameter_function type_parameter_ptr
    228 %type<decl> type_parameter_redeclarator type_ptr type_redeclarator typedef_type_specifier
     226%type<decl> type_parameter_redeclarator type_ptr variable_type_redeclarator typedef_type_specifier
    229227%type<decl> typegen_declaration_specifier typegen_type_specifier typegen_name
    230228
     
    352350        primary_expression
    353351        | postfix_expression '[' push assignment_expression pop ']'
    354                 // CFA, comma_expression disallowed in the context because it results in a commom user error: subscripting a
     352                // CFA, comma_expression disallowed in this context because it results in a common user error: subscripting a
    355353                // matrix with x[i,j] instead of x[i][j]. While this change is not backwards compatible, there seems to be
    356354                // little advantage to this feature and many disadvantages. It is possible to write x[(i,j)] in CFA, which is
     
    423421unary_expression:
    424422        postfix_expression
    425         // first location where constant/string can have operator applied: sizeof 3/sizeof "abc"
    426         // still requires semantics checks, e.g., ++3, 3--, *3, &&3
     423                // first location where constant/string can have operator applied: sizeof 3/sizeof "abc" still requires
     424                // semantics checks, e.g., ++3, 3--, *3, &&3
    427425        | constant
    428426                { $$ = $1; }
    429427        | string_literal_list
    430428                { $$ = $1; }
     429        | EXTENSION cast_expression                                                     // GCC
     430                { $$ = $2->set_extension( true ); }
     431        | ptrref_operator cast_expression                                       // CFA
     432                { $$ = new CompositeExprNode( $1, $2 ); }
     433                // '*' ('&') is separated from unary_operator because of shift/reduce conflict in:
     434                //              { * X; }         // dereference X
     435                //              { * int X; } // CFA declaration of pointer to int
     436        | unary_operator cast_expression
     437                { $$ = new CompositeExprNode( $1, $2 ); }
    431438        | ICR unary_expression
    432439                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), $2 ); }
    433440        | DECR unary_expression
    434441                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), $2 ); }
    435         | EXTENSION cast_expression                                                     // GCC
    436                 { $$ = $2; }
    437         | unary_operator cast_expression
    438                 { $$ = new CompositeExprNode( $1, $2 ); }
    439         | '!' cast_expression
    440                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), $2 ); }
    441         | '*' cast_expression                                                           // CFA
    442                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), $2 ); }
    443                 // '*' is is separated from unary_operator because of shift/reduce conflict in:
    444                 //              { * X; } // dereference X
    445                 //              { * int X; } // CFA declaration of pointer to int
    446                 // '&' must be moved here if C++ reference variables are supported.
    447442        | SIZEOF unary_expression
    448443                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), $2 ); }
     
    461456        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    462457                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 ) ); }
    463         | ANDAND no_attr_identifier                                                     // GCC, address of label
    464                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }
     458//      | ANDAND IDENTIFIER                                                                     // GCC, address of label
     459//              { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }
     460        ;
     461
     462ptrref_operator:
     463        '*'                                                                                     { $$ = new OperatorNode( OperatorNode::PointTo ); }
     464        | '&'                                                                           { $$ = new OperatorNode( OperatorNode::AddressOf ); }
     465                // GCC, address of label must be handled by semantic check for ref,ref,label
     466        | ANDAND                                                                        { $$ = new OperatorNode( OperatorNode::And ); }
    465467        ;
    466468
    467469unary_operator:
    468         '&'                                                                                     { $$ = new OperatorNode( OperatorNode::AddressOf ); }
    469         | '+'                                                                           { $$ = new OperatorNode( OperatorNode::UnPlus ); }
     470        '+'                                                                                     { $$ = new OperatorNode( OperatorNode::UnPlus ); }
    470471        | '-'                                                                           { $$ = new OperatorNode( OperatorNode::UnMinus ); }
     472        | '!'                                                                           { $$ = new OperatorNode( OperatorNode::Neg ); }
    471473        | '~'                                                                           { $$ = new OperatorNode( OperatorNode::BitNeg ); }
    472474        ;
     
    646648                        Token fn; fn.str = new std::string( "^?{}" ); // location undefined
    647649                        $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
    648                                 (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), $2 ))->set_link( $4 ) ), 0 );
     650                                (ExpressionNode *)( $2 )->set_link( $4 ) ), 0 );
    649651                }
    650652        ;
    651653
    652654labeled_statement:
    653         no_attr_identifier ':' attribute_list_opt statement
     655                // labels cannot be identifiers 0 or 1
     656        IDENTIFIER ':' attribute_list_opt statement
    654657                {
    655658                        $$ = $4->add_label( $1 );
     
    679682                { $$ = new StatementNode( $1 ); }
    680683        | EXTENSION declaration                                                         // GCC
    681                 { $$ = new StatementNode( $2 ); }
     684                { $$ = new StatementNode( $2 )/*->set_extension( true )*/; }
    682685        | function_definition
    683686                { $$ = new StatementNode( $1 ); }
     
    804807
    805808jump_statement:
    806         GOTO no_attr_identifier ';'
     809        GOTO IDENTIFIER ';'
    807810                { $$ = new StatementNode( StatementNode::Goto, $2 ); }
    808811        | GOTO '*' comma_expression ';'                                         // GCC, computed goto
     
    813816                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    814817                { $$ = new StatementNode( StatementNode::Continue ); }
    815         | CONTINUE no_attr_identifier ';'                                       // CFA, multi-level continue
     818        | CONTINUE IDENTIFIER ';'                                       // CFA, multi-level continue
    816819                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    817820                // the target of the transfer appears only at the start of an iteration statement.
     
    820823                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    821824                { $$ = new StatementNode( StatementNode::Break ); }
    822         | BREAK no_attr_identifier ';'                                          // CFA, multi-level exit
     825        | BREAK IDENTIFIER ';'                                          // CFA, multi-level exit
    823826                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    824827                // the target of the transfer appears only at the start of an iteration statement.
     
    14691472        new_field_declaring_list ';'                                            // CFA, new style field declaration
    14701473        | EXTENSION new_field_declaring_list ';'                        // GCC
    1471                 { $$ = $2; }
     1474                { $$ = $2/*->set_extension( true )*/; }
    14721475        | field_declaring_list ';'
    14731476        | EXTENSION field_declaring_list ';'                            // GCC
    1474                 { $$ = $2; }
     1477                { $$ = $2/*->set_extension( true )*/; }
    14751478        ;
    14761479
     
    15001503                // A semantic check is required to ensure bit_subrange only appears on base type int.
    15011504                { $$ = $1->addBitfield( $2 ); }
    1502         | type_redeclarator bit_subrange_size_opt
     1505        | variable_type_redeclarator bit_subrange_size_opt
    15031506                // A semantic check is required to ensure bit_subrange only appears on base type int.
    15041507                { $$ = $1->addBitfield( $2 ); }
     
    17021705                { $$ = $2; }
    17031706        | ATassign initializer
    1704                 { $$ = $2; }
     1707                { $$ = $2->set_maybeConstructed( false ); }
    17051708        ;
    17061709
     
    17441747
    17451748designator:
    1746         // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0
    1747         // only ".0" and ".1" allowed => semantic check
     1749                // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0 only ".0" and ".1"
     1750                // allowed => semantic check
    17481751        FLOATINGconstant
    17491752                { $$ = new DesignatorNode( new VarRefNode( $1 ) ); }
     
    19881991                }
    19891992        | EXTENSION external_definition
    1990                 { $$ = $2; }
     1993                { $$ = $2/*->set_extension( true )*/; }
    19911994        ;
    19921995
     
    19941997        function_definition
    19951998                // These rules are a concession to the "implicit int" type_specifier because there is a significant amount of
    1996                 // code with functions missing a type-specifier on the return type.  Parsing is possible because
    1997                 // function_definition does not appear in the context of an expression (nested functions would preclude this
    1998                 // concession). A function prototype declaration must still have a type_specifier.  OBSOLESCENT (see 1)
     1999                // legacy code with global functions missing the type-specifier for the return type, and assuming "int".
     2000                // Parsing is possible because function_definition does not appear in the context of an expression (nested
     2001                // functions preclude this concession, i.e., all nested function must have a return type). A function prototype
     2002                // declaration must still have a type_specifier.  OBSOLESCENT (see 1)
    19992003        | function_declarator compound_statement
    20002004                {
     
    20742078declarator:
    20752079        variable_declarator
     2080        | variable_type_redeclarator
    20762081        | function_declarator
    2077         | type_redeclarator
    20782082        ;
    20792083
     
    21752179
    21762180variable_ptr:
    2177         '*' variable_declarator
     2181        ptrref_operator variable_declarator
    21782182                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2179         | '*' type_qualifier_list variable_declarator
     2183        | ptrref_operator type_qualifier_list variable_declarator
    21802184                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    21812185        | '(' variable_ptr ')'
     
    22012205        ;
    22022206
    2203 // This pattern parses a function declarator that is not redefining a typedef name. Because functions cannot be nested,
    2204 // there is no context where a function definition can redefine a typedef name. To allow nested functions requires
    2205 // further separation of variable and function declarators in type_redeclarator.  The pattern precludes returning
    2206 // arrays and functions versus pointers to arrays and functions.
     2207// This pattern parses a function declarator that is not redefining a typedef name. For non-nested functions, there is
     2208// no context where a function definition can redefine a typedef name, i.e., the typedef and function name cannot exist
     2209// is the same scope.  The pattern precludes returning arrays and functions versus pointers to arrays and functions.
    22072210
    22082211function_declarator:
     
    22242227
    22252228function_ptr:
    2226         '*' function_declarator
     2229        ptrref_operator function_declarator
    22272230                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2228         | '*' type_qualifier_list function_declarator
     2231        | ptrref_operator type_qualifier_list function_declarator
    22292232                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    22302233        | '(' function_ptr ')'
     
    22612264
    22622265old_function_ptr:
    2263         '*' old_function_declarator
     2266        ptrref_operator old_function_declarator
    22642267                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2265         | '*' type_qualifier_list old_function_declarator
     2268        | ptrref_operator type_qualifier_list old_function_declarator
    22662269                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    22672270        | '(' old_function_ptr ')'
     
    22882291// and functions versus pointers to arrays and functions.
    22892292
    2290 type_redeclarator:
     2293variable_type_redeclarator:
    22912294        paren_type attribute_list_opt
    22922295                { $$ = $1->addQualifiers( $2 ); }
     
    23052308
    23062309type_ptr:
    2307         '*' type_redeclarator
     2310        ptrref_operator variable_type_redeclarator
    23082311                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2309         | '*' type_qualifier_list type_redeclarator
     2312        | ptrref_operator type_qualifier_list variable_type_redeclarator
    23102313                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    23112314        | '(' type_ptr ')'
     
    23492352
    23502353identifier_parameter_ptr:
    2351         '*' identifier_parameter_declarator
     2354        ptrref_operator identifier_parameter_declarator
    23522355                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2353         | '*' type_qualifier_list identifier_parameter_declarator
     2356        | ptrref_operator type_qualifier_list identifier_parameter_declarator
    23542357                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    23552358        | '(' identifier_parameter_ptr ')'
     
    23902393//              not as redundant parentheses around the identifier."
    23912394//
    2392 // which precludes the following cases:
     2395// For example:
    23932396//
    23942397//              typedef float T;
     
    24272430
    24282431type_parameter_ptr:
    2429         '*' type_parameter_redeclarator
     2432        ptrref_operator type_parameter_redeclarator
    24302433                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2431         | '*' type_qualifier_list type_parameter_redeclarator
     2434        | ptrref_operator type_qualifier_list type_parameter_redeclarator
    24322435                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    24332436        | '(' type_parameter_ptr ')'
     
    24672470
    24682471abstract_ptr:
    2469         '*'
     2472        ptrref_operator
    24702473                { $$ = DeclarationNode::newPointer( 0 ); }
    2471         | '*' type_qualifier_list
     2474        | ptrref_operator type_qualifier_list
    24722475                { $$ = DeclarationNode::newPointer( $2 ); }
    2473         | '*' abstract_declarator
     2476        | ptrref_operator abstract_declarator
    24742477                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2475         | '*' type_qualifier_list abstract_declarator
     2478        | ptrref_operator type_qualifier_list abstract_declarator
    24762479                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    24772480        | '(' abstract_ptr ')'
     
    25362539
    25372540abstract_parameter_ptr:
    2538         '*'
     2541        ptrref_operator
    25392542                { $$ = DeclarationNode::newPointer( 0 ); }
    2540         | '*' type_qualifier_list
     2543        | ptrref_operator type_qualifier_list
    25412544                { $$ = DeclarationNode::newPointer( $2 ); }
    2542         | '*' abstract_parameter_declarator
     2545        | ptrref_operator abstract_parameter_declarator
    25432546                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2544         | '*' type_qualifier_list abstract_parameter_declarator
     2547        | ptrref_operator type_qualifier_list abstract_parameter_declarator
    25452548                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    25462549        | '(' abstract_parameter_ptr ')'
     
    26142617
    26152618variable_abstract_ptr:
    2616         '*'
     2619        ptrref_operator
    26172620                { $$ = DeclarationNode::newPointer( 0 ); }
    2618         | '*' type_qualifier_list
     2621        | ptrref_operator type_qualifier_list
    26192622                { $$ = DeclarationNode::newPointer( $2 ); }
    2620         | '*' variable_abstract_declarator
     2623        | ptrref_operator variable_abstract_declarator
    26212624                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2622         | '*' type_qualifier_list variable_abstract_declarator
     2625        | ptrref_operator type_qualifier_list variable_abstract_declarator
    26232626                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    26242627        | '(' variable_abstract_ptr ')'
     
    26592662
    26602663new_identifier_parameter_ptr:                                                   // CFA
    2661         '*' type_specifier
     2664        ptrref_operator type_specifier
    26622665                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2663         | type_qualifier_list '*' type_specifier
     2666        | type_qualifier_list ptrref_operator type_specifier
    26642667                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2665         | '*' new_abstract_function
     2668        | ptrref_operator new_abstract_function
    26662669                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2667         | type_qualifier_list '*' new_abstract_function
     2670        | type_qualifier_list ptrref_operator new_abstract_function
    26682671                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2669         | '*' new_identifier_parameter_declarator_tuple
     2672        | ptrref_operator new_identifier_parameter_declarator_tuple
    26702673                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2671         | type_qualifier_list '*' new_identifier_parameter_declarator_tuple
     2674        | type_qualifier_list ptrref_operator new_identifier_parameter_declarator_tuple
    26722675                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    26732676        ;
     
    27462749
    27472750new_abstract_ptr:                                                                               // CFA
    2748         '*' type_specifier
     2751        ptrref_operator type_specifier
    27492752                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2750         | type_qualifier_list '*' type_specifier
     2753        | type_qualifier_list ptrref_operator type_specifier
    27512754                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2752         | '*' new_abstract_function
     2755        | ptrref_operator new_abstract_function
    27532756                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2754         | type_qualifier_list '*' new_abstract_function
     2757        | type_qualifier_list ptrref_operator new_abstract_function
    27552758                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2756         | '*' new_abstract_declarator_tuple
     2759        | ptrref_operator new_abstract_declarator_tuple
    27572760                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2758         | type_qualifier_list '*' new_abstract_declarator_tuple
     2761        | type_qualifier_list ptrref_operator new_abstract_declarator_tuple
    27592762                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    27602763        ;
  • src/ResolvExpr/AlternativeFinder.cc

    r1b5c81ed rf80e0218  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:52:08 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Feb 10 17:00:04 2016
    13 // Update Count     : 24
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jun 13 16:13:54 2016
     13// Update Count     : 25
    1414//
    1515
     
    1919#include <functional>
    2020#include <cassert>
     21#include <unordered_map>
     22#include <utility>
     23#include <vector>
    2124
    2225#include "AlternativeFinder.h"
     
    3942#include "Tuples/NameMatcher.h"
    4043#include "Common/utility.h"
     44#include "InitTweak/InitTweak.h"
    4145
    4246extern bool resolvep;
     
    407411        }
    408412
    409         static const int recursionLimit = 10;
     413        // /// Map of declaration uniqueIds (intended to be the assertions in an AssertionSet) to their parents and the number of times they've been included
     414        //typedef std::unordered_map< UniqueId, std::unordered_map< UniqueId, unsigned > > AssertionParentSet;
     415       
     416        static const int recursionLimit = /*10*/ 4;  ///< Limit to depth of recursion satisfaction
     417        //static const unsigned recursionParentLimit = 1;  ///< Limit to the number of times an assertion can recursively use itself
    410418
    411419        void addToIndexer( AssertionSet &assertSet, SymTab::Indexer &indexer ) {
     
    416424                }
    417425        }
    418 
     426       
    419427        template< typename ForwardIterator, typename OutputIterator >
    420         void inferRecursive( ForwardIterator begin, ForwardIterator end, const Alternative &newAlt, OpenVarSet &openVars, const SymTab::Indexer &decls, const AssertionSet &newNeed, int level, const SymTab::Indexer &indexer, OutputIterator out ) {
     428        void inferRecursive( ForwardIterator begin, ForwardIterator end, const Alternative &newAlt, OpenVarSet &openVars, const SymTab::Indexer &decls, const AssertionSet &newNeed, /*const AssertionParentSet &needParents,*/
     429                                                 int level, const SymTab::Indexer &indexer, OutputIterator out ) {
    421430                if ( begin == end ) {
    422431                        if ( newNeed.empty() ) {
     
    431440                                        printAssertionSet( newNeed, std::cerr, 8 );
    432441                                )
    433                                 inferRecursive( newNeed.begin(), newNeed.end(), newAlt, openVars, decls, newerNeed, level+1, indexer, out );
     442                                inferRecursive( newNeed.begin(), newNeed.end(), newAlt, openVars, decls, newerNeed, /*needParents,*/ level+1, indexer, out );
    434443                                return;
    435444                        }
     
    438447                ForwardIterator cur = begin++;
    439448                if ( ! cur->second ) {
    440                         inferRecursive( begin, end, newAlt, openVars, decls, newNeed, level, indexer, out );
     449                        inferRecursive( begin, end, newAlt, openVars, decls, newNeed, /*needParents,*/ level, indexer, out );
    441450                }
    442451                DeclarationWithType *curDecl = cur->first;
     
    455464                                std::cerr << std::endl;
    456465                        )
     466                       
    457467                        AssertionSet newHave, newerNeed( newNeed );
    458468                        TypeEnvironment newEnv( newAlt.env );
     
    477487                                newerAlt.env = newEnv;
    478488                                assert( (*candidate)->get_uniqueId() );
    479                                 Expression *varExpr = new VariableExpr( static_cast< DeclarationWithType* >( Declaration::declFromId( (*candidate)->get_uniqueId() ) ) );
     489                                DeclarationWithType *candDecl = static_cast< DeclarationWithType* >( Declaration::declFromId( (*candidate)->get_uniqueId() ) );
     490                                //AssertionParentSet newNeedParents( needParents );
     491                                // skip repeatingly-self-recursive assertion satisfaction
     492                                // DOESN'T WORK: grandchild nodes conflict with their cousins
     493                                //if ( newNeedParents[ curDecl->get_uniqueId() ][ candDecl->get_uniqueId() ]++ > recursionParentLimit ) continue;
     494                                Expression *varExpr = new VariableExpr( candDecl );
    480495                                deleteAll( varExpr->get_results() );
    481496                                varExpr->get_results().clear();
     
    491506                                // XXX: this is a memory leak, but adjType can't be deleted because it might contain assertions
    492507                                appExpr->get_inferParams()[ curDecl->get_uniqueId() ] = ParamEntry( (*candidate)->get_uniqueId(), adjType->clone(), curDecl->get_type()->clone(), varExpr );
    493                                 inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, level, indexer, out );
     508                                inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, /*newNeedParents,*/ level, indexer, out );
    494509                        } else {
    495510                                delete adjType;
     
    513528                addToIndexer( have, decls );
    514529                AssertionSet newNeed;
    515                 inferRecursive( need.begin(), need.end(), newAlt, openVars, decls, newNeed, 0, indexer, out );
     530                //AssertionParentSet needParents;
     531                inferRecursive( need.begin(), need.end(), newAlt, openVars, decls, newNeed, /*needParents,*/ 0, indexer, out );
    516532//      PRINT(
    517533//          std::cerr << "declaration 14 is ";
     
    546562
    547563                {
    548                         NameExpr *fname = 0;;
    549                         if ( ( fname = dynamic_cast<NameExpr *>( untypedExpr->get_function()))
    550                                  && ( fname->get_name() == std::string("&&")) ) {
     564                        std::string fname = InitTweak::getFunctionName( untypedExpr );
     565                        if ( fname == "&&" ) {
    551566                                VoidType v = Type::Qualifiers();                // resolve to type void *
    552567                                PointerType pt( Type::Qualifiers(), v.clone() );
     
    757772                for ( std::list< DeclarationWithType* >::iterator i = declList.begin(); i != declList.end(); ++i ) {
    758773                        VariableExpr newExpr( *i, nameExpr->get_argName() );
     774                        newExpr.set_extension( nameExpr->get_extension() );
    759775                        alternatives.push_back( Alternative( newExpr.clone(), env, Cost() ) );
    760776                        PRINT(
     
    982998                } // for
    983999        }
     1000
     1001        void AlternativeFinder::visit( ImplicitCopyCtorExpr * impCpCtorExpr ) {
     1002                alternatives.push_back( Alternative( impCpCtorExpr->clone(), env, Cost::zero ) );
     1003        }
    9841004} // namespace ResolvExpr
    9851005
  • src/ResolvExpr/AlternativeFinder.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // AlternativeFinder.h -- 
     7// AlternativeFinder.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:56:12 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 23:58:43 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Apr 19 11:44:53 2016
    1313// Update Count     : 2
    14 // 
     14//
    1515
    1616#ifndef ALTERNATIVEFINDER_H
     
    5454                virtual void visit( NameExpr *variableExpr );
    5555                virtual void visit( VariableExpr *variableExpr );
    56                 virtual void visit( ConstantExpr *constantExpr ); 
     56                virtual void visit( ConstantExpr *constantExpr );
    5757                virtual void visit( SizeofExpr *sizeofExpr );
    5858                virtual void visit( AlignofExpr *alignofExpr );
     
    6565                virtual void visit( CommaExpr *commaExpr );
    6666                virtual void visit( TupleExpr *tupleExpr );
     67                virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr );
    6768          public:  // xxx - temporary hack - should make Tuples::TupleAssignment a friend
    6869                template< typename InputIterator, typename OutputIterator >
  • src/ResolvExpr/CommonType.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // CommonType.cc -- 
     7// CommonType.cc --
    88//
    99// Author           : Richard C. Bilson
     
    134134                                result = new BasicType( basicType->get_qualifiers() + otherBasic->get_qualifiers(), newType );
    135135                        } // if
     136                } else if ( EnumInstType *enumInstType = dynamic_cast< EnumInstType * > ( type2 ) ) {
     137                        // use signed int in lieu of the enum type
     138                        BasicType::Kind newType = combinedType[ basicType->get_kind() ][ BasicType::SignedInt ];
     139                        if ( ( ( newType == basicType->get_kind() && basicType->get_qualifiers() >= enumInstType->get_qualifiers() ) || widenFirst ) && ( ( newType != basicType->get_kind() && basicType->get_qualifiers() <= enumInstType->get_qualifiers() ) || widenSecond ) ) {
     140                                result = new BasicType( basicType->get_qualifiers() + enumInstType->get_qualifiers(), newType );
     141                        } // if
    136142                } // if
    137143        }
     
    183189        }
    184190
    185         void CommonType::visit( EnumInstType *aggregateUseType ) {
     191        void CommonType::visit( EnumInstType *enumInstType ) {
     192                if ( dynamic_cast< BasicType * >( type2 ) ) {
     193                        // reuse BasicType, EnumInstType code by swapping type2 with enumInstType
     194                        Type * temp = type2;
     195                        type2 = enumInstType;
     196                        temp->accept( *this );
     197                        type2 = temp;
     198                } // if
    186199        }
    187200
  • src/ResolvExpr/ConversionCost.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // ConversionCost.cc -- 
     7// ConversionCost.cc --
    88//
    99// Author           : Richard C. Bilson
     
    157157                                cost = Cost( 0, 0, tableResult );
    158158                        } // if
    159                 } // if
     159                } else if ( dynamic_cast< EnumInstType *>( dest ) ) {
     160                        // xxx - not positive this is correct, but appears to allow casting int => enum
     161                        cost = Cost( 1, 0, 0 );
     162    } // if
    160163        }
    161164
  • src/ResolvExpr/RenameVars.cc

    r1b5c81ed rf80e0218  
    4545        void RenameVars::visit( PointerType *pointerType ) {
    4646                typeBefore( pointerType );
    47 ///   std::cout << "do pointer" << std::endl;
    4847                maybeAccept( pointerType->get_base(), *this );
    49 ///   std::cout << "done pointer" << std::endl;
    5048                typeAfter( pointerType );
    5149        }
     
    6058        void RenameVars::visit( FunctionType *functionType ) {
    6159                typeBefore( functionType );
    62 ///   std::cout << "return vals" << std::endl;
    6360                acceptAll( functionType->get_returnVals(), *this );
    64 ///   std::cout << functionType->get_parameters().size() << " parameters" << std::endl;
    6561                acceptAll( functionType->get_parameters(), *this );
    66 ///   std::cout << "done function" << std::endl;
    6762                typeAfter( functionType );
    6863        }
     
    9590        void RenameVars::visit( TypeInstType *instType ) {
    9691                typeBefore( instType );
    97 ///   std::cout << "instance of type " << instType->get_name() << std::endl;
    9892                std::map< std::string, std::string >::const_iterator i = mapStack.front().find( instType->get_name() );
    9993                if ( i != mapStack.front().end() ) {
    100 ///     std::cout << "found name " << i->second << std::endl;
    10194                        instType->set_name( i->second );
    10295                } else {
    103 ///     std::cout << "no name found" << std::endl;
    10496                } // if
    10597                acceptAll( instType->get_parameters(), *this );
     
    120112        void RenameVars::typeBefore( Type *type ) {
    121113                if ( ! type->get_forall().empty() ) {
    122 ///     std::cout << "type with forall: ";
    123 ///     type->print( std::cout );
    124 ///     std::cout << std::endl;
    125114                        // copies current name mapping into new mapping
    126115                        mapStack.push_front( mapStack.front() );
  • src/ResolvExpr/Resolver.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Resolver.cc -- 
     7// Resolver.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:17:01 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Mar 24 16:43:11 2016
    13 // Update Count     : 181
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri May 13 11:36:40 2016
     13// Update Count     : 203
    1414//
    1515
     
    2525#include "SymTab/Indexer.h"
    2626#include "Common/utility.h"
     27#include "InitTweak/InitTweak.h"
    2728
    2829#include <iostream>
     
    3334          public:
    3435                Resolver() : SymTab::Indexer( false ), switchType( 0 ) {}
    35  
     36
    3637                virtual void visit( FunctionDecl *functionDecl );
    3738                virtual void visit( ObjectDecl *functionDecl );
    3839                virtual void visit( TypeDecl *typeDecl );
     40                virtual void visit( EnumDecl * enumDecl );
    3941
    4042                virtual void visit( ArrayType * at );
     
    5153                virtual void visit( BranchStmt *branchStmt );
    5254                virtual void visit( ReturnStmt *returnStmt );
     55                virtual void visit( ImplicitCtorDtorStmt * impCtorDtorStmt );
    5356
    5457                virtual void visit( SingleInit *singleInit );
    5558                virtual void visit( ListInit *listInit );
     59                virtual void visit( ConstructorInit *ctorInit );
    5660          private:
    5761        typedef std::list< Initializer * >::iterator InitIterator;
     
    5963          void resolveAggrInit( AggregateDecl *, InitIterator &, InitIterator & );
    6064          void resolveSingleAggrInit( Declaration *, InitIterator &, InitIterator & );
    61 
     65          void fallbackInit( ConstructorInit * ctorInit );
    6266                std::list< Type * > functionReturn;
    6367                Type *initContext;
    6468                Type *switchType;
     69                bool inEnumDecl = false;
    6570        };
    6671
     
    8287        }
    8388
     89
    8490        namespace {
    8591                void finishExpr( Expression *expr, const TypeEnvironment &env ) {
     
    8793                        env.makeSubstitution( *expr->get_env() );
    8894                }
    89 
    90                 Expression *findVoidExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
    91                         global_renamer.reset();
    92                         TypeEnvironment env;
    93                         Expression *newExpr = resolveInVoidContext( untyped, indexer, env );
    94                         finishExpr( newExpr, env );
    95                         return newExpr;
    96                 }
    97  
     95        } // namespace
     96
     97        Expression *findVoidExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
     98                global_renamer.reset();
     99                TypeEnvironment env;
     100                Expression *newExpr = resolveInVoidContext( untyped, indexer, env );
     101                finishExpr( newExpr, env );
     102                return newExpr;
     103        }
     104
     105        namespace {
    98106                Expression *findSingleExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
    99107                        TypeEnvironment env;
     
    126134                        } // if
    127135                }
    128  
     136
    129137                Expression *findIntegralExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
    130138                        TypeEnvironment env;
     
    159167                        return newExpr;
    160168                }
    161  
    162         }
    163  
     169
     170        }
     171
    164172        void Resolver::visit( ObjectDecl *objectDecl ) {
    165173                Type *new_type = resolveTypeof( objectDecl->get_type(), *this );
     
    172180                Type *temp = initContext;
    173181                initContext = new_type;
     182                if ( inEnumDecl && dynamic_cast< EnumInstType * >( initContext ) ) {
     183                        // enumerator initializers should not use the enum type to initialize, since
     184                        // the enum type is still incomplete at this point. Use signed int instead.
     185                        initContext = new BasicType( Type::Qualifiers(), BasicType::SignedInt );
     186                }
    174187                SymTab::Indexer::visit( objectDecl );
     188                if ( inEnumDecl && dynamic_cast< EnumInstType * >( initContext ) ) {
     189                        // delete newly created signed int type
     190                        delete initContext;
     191                }
    175192                initContext = temp;
    176193        }
     
    212229        }
    213230
     231        void Resolver::visit( EnumDecl * enumDecl ) {
     232                // in case we decide to allow nested enums
     233                bool oldInEnumDecl = inEnumDecl;
     234                inEnumDecl = true;
     235                SymTab::Indexer::visit( enumDecl );
     236                inEnumDecl = oldInEnumDecl;
     237        }
     238
    214239        void Resolver::visit( ExprStmt *exprStmt ) {
    215240                if ( exprStmt->get_expr() ) {
     
    258283                        forStmt->set_condition( newExpr );
    259284                } // if
    260                
     285
    261286                if ( forStmt->get_increment() ) {
    262287                        Expression * newExpr = findVoidExpression( forStmt->get_increment(), *this );
     
    272297                delete switchStmt->get_condition();
    273298                switchStmt->set_condition( newExpr );
    274  
     299
    275300                visitor.Visitor::visit( switchStmt );
    276301        }
     
    314339        bool isCharType( T t ) {
    315340                if ( BasicType * bt = dynamic_cast< BasicType * >( t ) ) {
    316                         return bt->get_kind() == BasicType::Char || bt->get_kind() == BasicType::SignedChar || 
     341                        return bt->get_kind() == BasicType::Char || bt->get_kind() == BasicType::SignedChar ||
    317342                                bt->get_kind() == BasicType::UnsignedChar;
    318343                }
     
    326351                                string n = ne->get_name();
    327352                                if (n == "0") {
    328                                         initContext = new BasicType(Type::Qualifiers(), 
     353                                        initContext = new BasicType(Type::Qualifiers(),
    329354                                                                                                BasicType::SignedInt);
    330355                                } else {
     
    332357                                        initContext = decl->get_type();
    333358                                }
    334                         } else if (ConstantExpr * e = 
     359                        } else if (ConstantExpr * e =
    335360                                           dynamic_cast<ConstantExpr*>(singleInit->get_value())) {
    336361                                Constant *c = e->get_constant();
     
    355380                                                        singleInit->set_value( ce->get_arg() );
    356381                                                        ce->set_arg( NULL );
    357                                                         delete ce;                                                                     
     382                                                        delete ce;
    358383                                                }
    359384                                        }
     
    471496#endif
    472497        }
     498
     499        // ConstructorInit - fall back on C-style initializer
     500        void Resolver::fallbackInit( ConstructorInit * ctorInit ) {
     501                // could not find valid constructor, or found an intrinsic constructor
     502                // fall back on C-style initializer
     503                delete ctorInit->get_ctor();
     504                ctorInit->set_ctor( NULL );
     505                delete ctorInit->get_dtor();
     506                ctorInit->set_dtor( NULL );
     507                maybeAccept( ctorInit->get_init(), *this );
     508        }
     509
     510        void Resolver::visit( ConstructorInit *ctorInit ) {
     511                try {
     512                        maybeAccept( ctorInit->get_ctor(), *this );
     513                        maybeAccept( ctorInit->get_dtor(), *this );
     514                } catch ( SemanticError ) {
     515                        // no alternatives for the constructor initializer - fallback on C-style initializer
     516                        // xxx - not sure if this makes a ton of sense - should maybe never be able to have this situation?
     517                        fallbackInit( ctorInit );
     518                        return;
     519                }
     520
     521                // found a constructor - can get rid of C-style initializer
     522                delete ctorInit->get_init();
     523                ctorInit->set_init( NULL );
     524
     525                // intrinsic single parameter constructors and destructors do nothing. Since this was
     526                // implicitly generated, there's no way for it to have side effects, so get rid of it
     527                // to clean up generated code.
     528                if ( InitTweak::isInstrinsicSingleArgCallStmt( ctorInit->get_ctor() ) ) {
     529                        delete ctorInit->get_ctor();
     530                        ctorInit->set_ctor( NULL );
     531                }
     532                if ( InitTweak::isInstrinsicSingleArgCallStmt( ctorInit->get_ctor() ) ) {
     533                        delete ctorInit->get_dtor();
     534                        ctorInit->set_dtor( NULL );
     535                }
     536        }
     537
     538        void Resolver::visit( ImplicitCtorDtorStmt * impCtorDtorStmt ) {
     539                // before resolving ctor/dtor, need to remove type qualifiers from the first argument (the object being constructed).
     540                // Do this through a cast expression to greatly simplify the code.
     541                Expression * callExpr = InitTweak::getCtorDtorCall( impCtorDtorStmt );
     542                assert( callExpr );
     543                Expression *& constructee = InitTweak::getCallArg( callExpr, 0 );
     544                Type * type = 0;
     545
     546                // need to find the type of the first argument, which is unfortunately not uniform since array construction
     547                // includes an untyped '+' expression.
     548                if ( UntypedExpr * plusExpr = dynamic_cast< UntypedExpr * >( constructee ) ) {
     549                        // constructee is <array>+<index>
     550                        // get Variable <array>, then get the base type of the VariableExpr - this is the type that needs to be fixed
     551                        Expression * arr = InitTweak::getCallArg( plusExpr, 0 );
     552                        assert( dynamic_cast< VariableExpr * >( arr ) );
     553                        assert( arr && arr->get_results().size() == 1 );
     554                        type = arr->get_results().front()->clone();
     555                } else {
     556                        // otherwise, constructing a plain object, which means the object's address is being taken.
     557                        // Need to get the type of the VariableExpr object, because the AddressExpr is rebuilt and uses the
     558                        // type of the VariableExpr to do so.
     559                        assert( constructee->get_results().size() == 1 );
     560                        AddressExpr * addrExpr = dynamic_cast< AddressExpr * > ( constructee );
     561                        assert( addrExpr && addrExpr->get_results().size() == 1);
     562                        type = addrExpr->get_results().front()->clone();
     563                }
     564                // cast to T* with qualifiers removed.
     565                // unfortunately, lvalue is considered a qualifier. For AddressExpr to resolve, its argument
     566                // must have an lvalue qualified type, so remove all qualifiers except lvalue. If we ever
     567                // remove lvalue as a qualifier, this can change to
     568                //   type->get_qualifiers() = Type::Qualifiers();
     569                Type * base = InitTweak::getPointerBase( type );
     570                assert( base );
     571                base->get_qualifiers() -= Type::Qualifiers(true, true, true, false, true, true);
     572                // if pointer has lvalue qualifier, cast won't appear in output
     573                type->set_isLvalue( false );
     574                constructee = new CastExpr( constructee, type );
     575
     576                // finally, resolve the ctor/dtor
     577                impCtorDtorStmt->get_callStmt()->accept( *this );
     578        }
    473579} // namespace ResolvExpr
    474580
  • src/ResolvExpr/Resolver.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Resolver.h -- 
     7// Resolver.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:18:34 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 12:19:32 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Apr 14 15:06:53 2016
    1313// Update Count     : 2
    1414//
     
    2424        void resolve( std::list< Declaration * > translationUnit );
    2525        Expression *resolveInVoidContext( Expression *expr, const SymTab::Indexer &indexer );
     26        Expression *findVoidExpression( Expression *untyped, const SymTab::Indexer &indexer );
    2627} // namespace ResolvExpr
    2728
  • src/ResolvExpr/typeops.h

    r1b5c81ed rf80e0218  
    5454 
    5555        // in AdjustExprType.cc
     56        /// Replaces array types with the equivalent pointer, and function types with a pointer-to-function
    5657        void adjustExprType( Type *&type, const TypeEnvironment &env, const SymTab::Indexer &indexer );
    5758
  • src/SymTab/AddVisit.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // AddVisit.h -- 
     7// AddVisit.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 16:14:32 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Apr  7 14:42:21 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Apr 14 15:52:42 2016
    1313// Update Count     : 5
    1414//
     
    4848        //      maybeAccept( caseStmt->get_condition(), visitor );
    4949        // }
     50
     51        template< typename Visitor >
     52        void acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor, bool addBefore ) {
     53                std::list< Declaration * >::iterator i = translationUnit.begin();
     54                while ( i != translationUnit.end() ) {
     55                        (*i)->accept( visitor );
     56                        std::list< Declaration * >::iterator next = i;
     57                        next++;
     58                        if ( ! visitor.get_declsToAdd().empty() ) {
     59                                translationUnit.splice( addBefore ? i : next, visitor.get_declsToAdd() );
     60                        } // if
     61                        i = next;
     62                } // while
     63        }
     64
    5065} // namespace SymTab
    5166
  • src/SymTab/Indexer.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Indexer.cc -- 
     7// Indexer.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:37:33 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:31:29 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri Apr 22 15:25:43 2016
    1313// Update Count     : 11
    1414//
     
    5959                }
    6060        }
    61        
     61
    6262        template< typename Decl >
    6363        void dump( const std::unordered_map< std::string, Decl* > &table, std::ostream &os ) {
     
    6666                } // for
    6767        }
    68        
     68
    6969        struct Indexer::Impl {
    7070                Impl( unsigned long _scope ) : refCount(1), scope( _scope ), size( 0 ), base(),
     
    7676                unsigned long size;       ///< Number of elements stored in this table
    7777                const Indexer base;       ///< Base indexer this extends
    78                
     78
    7979                IdTable idTable;          ///< Identifier namespace
    8080                TypeTable typeTable;      ///< Type namespace
     
    213213        void Indexer::visit( StructDecl *aggregateDecl ) {
    214214                // make up a forward declaration and add it before processing the members
    215                 StructDecl fwdDecl( aggregateDecl->get_name() );
     215                // needs to be on the heap because addStruct saves the pointer
     216                StructDecl &fwdDecl = *new StructDecl( aggregateDecl->get_name() );
    216217                cloneAll( aggregateDecl->get_parameters(), fwdDecl.get_parameters() );
    217218                debugPrint( "Adding fwd decl for struct " << fwdDecl.get_name() << std::endl );
    218219                addStruct( &fwdDecl );
    219  
     220
    220221                enterScope();
    221222                acceptAll( aggregateDecl->get_parameters(), *this );
    222223                acceptAll( aggregateDecl->get_members(), *this );
    223224                leaveScope();
    224  
     225
    225226                debugPrint( "Adding struct " << aggregateDecl->get_name() << std::endl );
    226227                // this addition replaces the forward declaration
     
    234235                debugPrint( "Adding fwd decl for union " << fwdDecl.get_name() << std::endl );
    235236                addUnion( &fwdDecl );
    236  
     237
    237238                enterScope();
    238239                acceptAll( aggregateDecl->get_parameters(), *this );
    239240                acceptAll( aggregateDecl->get_members(), *this );
    240241                leaveScope();
    241  
     242
    242243                debugPrint( "Adding union " << aggregateDecl->get_name() << std::endl );
    243244                addUnion( aggregateDecl );
     
    256257                acceptAll( aggregateDecl->get_members(), *this );
    257258                leaveScope();
    258  
     259
    259260                debugPrint( "Adding context " << aggregateDecl->get_name() << std::endl );
    260261                addTrait( aggregateDecl );
     
    438439        }
    439440
    440        
     441
    441442
    442443        void Indexer::lookupId( const std::string &id, std::list< DeclarationWithType* > &out ) const {
    443444                std::unordered_set< std::string > foundMangleNames;
    444                
     445
    445446                Indexer::Impl *searchTables = tables;
    446447                while ( searchTables ) {
     
    452453                                        // mark the mangled name as found, skipping this insertion if a declaration for that name has already been found
    453454                                        if ( foundMangleNames.insert( decl->first ).second == false ) continue;
    454                                        
     455
    455456                                        out.push_back( decl->second );
    456457                                }
    457458                        }
    458                        
     459
    459460                        // get declarations from base indexers
    460461                        searchTables = searchTables->base.tables;
     
    511512        }
    512513
    513         bool Indexer::hasIncompatibleCDecl( const std::string &id, const std::string &mangleName ) const {
     514        bool Indexer::hasIncompatibleCDecl( const std::string &id, const std::string &mangleName, unsigned long scope ) const {
    514515                if ( ! tables ) return false;
     516                if ( tables->scope < scope ) return false;
    515517
    516518                IdTable::const_iterator decls = tables->idTable.find( id );
     
    518520                        const MangleTable &mangleTable = decls->second;
    519521                        for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) {
    520                                 // check for C decls with the same name, skipping 
     522                                // check for C decls with the same name, skipping
    521523                                // those with a compatible type (by mangleName)
    522524                                if ( decl->second->get_linkage() == LinkageSpec::C && decl->first != mangleName ) return true;
     
    524526                }
    525527
    526                 return tables->base.hasIncompatibleCDecl( id, mangleName );
    527         }
    528        
     528                return tables->base.hasIncompatibleCDecl( id, mangleName, scope );
     529        }
     530
    529531        NamedTypeDecl *Indexer::lookupTypeAtScope( const std::string &id, unsigned long scope ) const {
    530532                if ( ! tables ) return 0;
     
    534536                return ret != tables->typeTable.end() ? ret->second : tables->base.lookupTypeAtScope( id, scope );
    535537        }
    536        
     538
    537539        StructDecl *Indexer::lookupStructAtScope( const std::string &id, unsigned long scope ) const {
    538540                if ( ! tables ) return 0;
     
    542544                return ret != tables->structTable.end() ? ret->second : tables->base.lookupStructAtScope( id, scope );
    543545        }
    544        
     546
    545547        EnumDecl *Indexer::lookupEnumAtScope( const std::string &id, unsigned long scope ) const {
    546548                if ( ! tables ) return 0;
     
    550552                return ret != tables->enumTable.end() ? ret->second : tables->base.lookupEnumAtScope( id, scope );
    551553        }
    552        
     554
    553555        UnionDecl *Indexer::lookupUnionAtScope( const std::string &id, unsigned long scope ) const {
    554556                if ( ! tables ) return 0;
     
    558560                return ret != tables->unionTable.end() ? ret->second : tables->base.lookupUnionAtScope( id, scope );
    559561        }
    560        
     562
    561563        TraitDecl *Indexer::lookupTraitAtScope( const std::string &id, unsigned long scope ) const {
    562564                if ( ! tables ) return 0;
     
    601603                return true;
    602604        }
    603        
     605
    604606        void Indexer::addId( DeclarationWithType *decl ) {
    605607                makeWritable();
     
    617619                DeclarationWithType *existing = lookupIdAtScope( name, mangleName, scope );
    618620                if ( ! existing || ! addedIdConflicts( existing, decl ) ) {
    619                         // this ensures that no two declarations with the same unmangled name both have C linkage
    620                         if ( decl->get_linkage() == LinkageSpec::C && hasIncompatibleCDecl( name, mangleName ) ) {
     621                        // this ensures that no two declarations with the same unmangled name at the same scope both have C linkage
     622                        if ( decl->get_linkage() == LinkageSpec::C && hasIncompatibleCDecl( name, mangleName, scope ) ) {
    621623                                throw SemanticError( "invalid overload of C function ", decl );
    622                         } // NOTE this is broken in Richard's original code in such a way that it never triggers (it 
    623                           // doesn't check decls that have the same manglename, and all C-linkage decls are defined to 
     624                        } // NOTE this is broken in Richard's original code in such a way that it never triggers (it
     625                          // doesn't check decls that have the same manglename, and all C-linkage decls are defined to
    624626                          // have their name as their manglename, hence the error can never trigger).
    625                           // The code here is closer to correct, but name mangling would have to be completely 
     627                          // The code here is closer to correct, but name mangling would have to be completely
    626628                          // isomorphic to C type-compatibility, which it may not be.
    627                        
     629
    628630                        tables->idTable[ name ][ mangleName ] = decl;
    629631                        ++tables->size;
     
    640642                }
    641643        }
    642        
     644
    643645        void Indexer::addType( NamedTypeDecl *decl ) {
    644646                makeWritable();
     
    671673                addStruct( new StructDecl( id ) );
    672674        }
    673        
     675
    674676        void Indexer::addStruct( StructDecl *decl ) {
    675677                makeWritable();
     
    689691                }
    690692        }
    691        
     693
    692694        void Indexer::addEnum( EnumDecl *decl ) {
    693695                makeWritable();
     
    711713                addUnion( new UnionDecl( id ) );
    712714        }
    713        
     715
    714716        void Indexer::addUnion( UnionDecl *decl ) {
    715717                makeWritable();
     
    729731                }
    730732        }
    731        
     733
    732734        void Indexer::addTrait( TraitDecl *decl ) {
    733735                makeWritable();
     
    750752        void Indexer::enterScope() {
    751753                ++scope;
    752                
     754
    753755                if ( doDebug ) {
    754756                        std::cout << "--- Entering scope " << scope << std::endl;
     
    783785            using std::cerr;
    784786
    785             cerr << "===idTable===" << std::endl;
    786             if ( tables ) dump( tables->idTable, os );
    787             cerr << "===typeTable===" << std::endl;
    788             if ( tables ) dump( tables->typeTable, os );
    789             cerr << "===structTable===" << std::endl;
    790             if ( tables ) dump( tables->structTable, os );
    791             cerr << "===enumTable===" << std::endl;
    792             if ( tables ) dump( tables->enumTable, os );
    793             cerr << "===unionTable===" << std::endl;
    794             if ( tables ) dump( tables->unionTable, os );
    795             cerr << "===contextTable===" << std::endl;
    796             if ( tables ) dump( tables->traitTable, os );
     787                if ( tables ) {
     788                        os << "--- scope " << tables->scope << " ---" << std::endl;
     789
     790                        os << "===idTable===" << std::endl;
     791                        dump( tables->idTable, os );
     792                        os << "===typeTable===" << std::endl;
     793                        dump( tables->typeTable, os );
     794                        os << "===structTable===" << std::endl;
     795                        dump( tables->structTable, os );
     796                        os << "===enumTable===" << std::endl;
     797                        dump( tables->enumTable, os );
     798                        os << "===unionTable===" << std::endl;
     799                        dump( tables->unionTable, os );
     800                        os << "===contextTable===" << std::endl;
     801                        dump( tables->traitTable, os );
     802
     803                        tables->base.print( os, indent );
     804                } else {
     805                        os << "--- end ---" << std::endl;
     806                }
     807
    797808        }
    798809} // namespace SymTab
  • src/SymTab/Indexer.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Indexer.h -- 
     7// Indexer.h --
    88//
    99// Author           : Richard C. Bilson
     
    3333                Indexer& operator= ( Indexer &&that );
    3434
    35                 //using Visitor::visit;
     35                using Visitor::visit;
    3636                virtual void visit( ObjectDecl *objectDecl );
    3737                virtual void visit( FunctionDecl *functionDecl );
     
    5454                virtual void visit( MemberExpr *memberExpr );
    5555                virtual void visit( VariableExpr *variableExpr );
    56                 virtual void visit( ConstantExpr *constantExpr ); 
     56                virtual void visit( ConstantExpr *constantExpr );
    5757                virtual void visit( SizeofExpr *sizeofExpr );
    5858                virtual void visit( AlignofExpr *alignofExpr );
     
    9393                /// Gets the top-most trait declaration with the given ID
    9494                TraitDecl *lookupTrait( const std::string &id ) const;
    95  
     95
    9696                void print( std::ostream &os, int indent = 0 ) const;
    9797          private:
     
    9999                DeclarationWithType *lookupIdAtScope( const std::string &id, const std::string &mangleName, unsigned long scope ) const;
    100100                /// returns true if there exists a declaration with C linkage and the given name with a different mangled name
    101                 bool hasIncompatibleCDecl( const std::string &id, const std::string &mangleName ) const;
     101                bool hasIncompatibleCDecl( const std::string &id, const std::string &mangleName, unsigned long scope ) const;
    102102                // equivalents to lookup functions that only look at tables at scope `scope` (which should be >= tables->scope)
    103103                NamedTypeDecl *lookupTypeAtScope( const std::string &id, unsigned long scope ) const;
     
    106106                UnionDecl *lookupUnionAtScope( const std::string &id, unsigned long scope ) const;
    107107                TraitDecl *lookupTraitAtScope( const std::string &id, unsigned long scope ) const;
    108                
     108
    109109                void addId( DeclarationWithType *decl );
    110110                void addType( NamedTypeDecl *decl );
     
    115115                void addUnion( UnionDecl *decl );
    116116                void addTrait( TraitDecl *decl );
    117                
     117
    118118                struct Impl;
    119119                Impl *tables;         ///< Copy-on-write instance of table data structure
  • src/SymTab/Validate.cc

    r1b5c81ed rf80e0218  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:50:04 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:39:30 2016
    13 // Update Count     : 251
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed May 11 13:17:52 2016
     13// Update Count     : 297
    1414//
    1515
     
    5656#include "MakeLibCfa.h"
    5757#include "TypeEquality.h"
     58#include "Autogen.h"
    5859#include "ResolvExpr/typeops.h"
    5960
     
    122123
    123124                const Indexer *indexer;
    124         };
    125 
    126         class AutogenerateRoutines : public Visitor {
    127           public:
    128                 /// Generates assignment operators for aggregate types as required
    129                 static void autogenerateRoutines( std::list< Declaration * > &translationUnit );
    130 
    131                 std::list< Declaration * > &get_declsToAdd() { return declsToAdd; }
    132 
    133                 virtual void visit( EnumDecl *enumDecl );
    134                 virtual void visit( StructDecl *structDecl );
    135                 virtual void visit( UnionDecl *structDecl );
    136                 virtual void visit( TypeDecl *typeDecl );
    137                 virtual void visit( TraitDecl *ctxDecl );
    138                 virtual void visit( FunctionDecl *functionDecl );
    139 
    140                 virtual void visit( FunctionType *ftype );
    141                 virtual void visit( PointerType *ftype );
    142 
    143                 virtual void visit( CompoundStmt *compoundStmt );
    144                 virtual void visit( SwitchStmt *switchStmt );
    145                 virtual void visit( ChooseStmt *chooseStmt );
    146                 // virtual void visit( CaseStmt *caseStmt );
    147 
    148                 AutogenerateRoutines() : functionNesting( 0 ) {}
    149           private:
    150                 template< typename StmtClass > void visitStatement( StmtClass *stmt );
    151 
    152                 std::list< Declaration * > declsToAdd;
    153                 std::set< std::string > structsDone;
    154                 unsigned int functionNesting;                   // current level of nested functions
    155125        };
    156126
     
    192162                template<typename AggDecl>
    193163                void addImplicitTypedef( AggDecl * aggDecl );
    194                
     164
    195165                typedef std::map< std::string, std::pair< TypedefDecl *, int > > TypedefMap;
    196166                TypedefMap typedefNames;
    197167                int scopeLevel;
    198168        };
     169
     170        class VerifyCtorDtor : public Visitor {
     171        public:
     172                /// ensure that constructors and destructors have at least one
     173                /// parameter, the first of which must be a pointer, and no
     174                /// return values.
     175                static void verify( std::list< Declaration * > &translationUnit );
     176
     177                virtual void visit( FunctionDecl *funcDecl );
     178};
    199179
    200180        class CompoundLiteral : public GenPoly::DeclMutator {
     
    217197                ReturnChecker::checkFunctionReturns( translationUnit );
    218198                mutateAll( translationUnit, compoundliteral );
    219                 AutogenerateRoutines::autogenerateRoutines( translationUnit );
     199                autogenerateRoutines( translationUnit );
    220200                acceptAll( translationUnit, pass3 );
     201                VerifyCtorDtor::verify( translationUnit );
    221202        }
    222203
     
    228209                type->accept( pass2 );
    229210                type->accept( pass3 );
    230         }
    231 
    232         template< typename Visitor >
    233         void acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor, bool addBefore ) {
    234                 std::list< Declaration * >::iterator i = translationUnit.begin();
    235                 while ( i != translationUnit.end() ) {
    236                         (*i)->accept( visitor );
    237                         std::list< Declaration * >::iterator next = i;
    238                         next++;
    239                         if ( ! visitor.get_declsToAdd().empty() ) {
    240                                 translationUnit.splice( addBefore ? i : next, visitor.get_declsToAdd() );
    241                         } // if
    242                         i = next;
    243                 } // while
    244211        }
    245212
     
    312279        void Pass1::visit( EnumDecl *enumDecl ) {
    313280                // Set the type of each member of the enumeration to be EnumConstant
    314 
    315281                for ( std::list< Declaration * >::iterator i = enumDecl->get_members().begin(); i != enumDecl->get_members().end(); ++i ) {
    316282                        ObjectDecl * obj = dynamic_cast< ObjectDecl * >( *i );
    317283                        assert( obj );
    318                         // obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
    319                         BasicType * enumType = new BasicType( Type::Qualifiers(), BasicType::SignedInt );
    320                         obj->set_type( enumType ) ;
     284                        obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
    321285                } // for
    322286                Parent::visit( enumDecl );
     
    324288
    325289        namespace {
    326                 template< typename DWTIterator >
    327                 void fixFunctionList( DWTIterator begin, DWTIterator end, FunctionType *func ) {
     290                template< typename DWTList >
     291                void fixFunctionList( DWTList & dwts, FunctionType * func ) {
    328292                        // the only case in which "void" is valid is where it is the only one in the list; then it should be removed
    329293                        // entirely other fix ups are handled by the FixFunction class
     294                        typedef typename DWTList::iterator DWTIterator;
     295                        DWTIterator begin( dwts.begin() ), end( dwts.end() );
    330296                        if ( begin == end ) return;
    331297                        FixFunction fixer;
    332298                        DWTIterator i = begin;
    333                         *i = (*i )->acceptMutator( fixer );
     299                        *i = (*i)->acceptMutator( fixer );
    334300                        if ( fixer.get_isVoid() ) {
    335301                                DWTIterator j = i;
    336302                                ++i;
    337                                 func->get_parameters().erase( j );
     303                                dwts.erase( j );
    338304                                if ( i != end ) {
    339305                                        throw SemanticError( "invalid type void in function type ", func );
     
    354320        void Pass1::visit( FunctionType *func ) {
    355321                // Fix up parameters and return types
    356                 fixFunctionList( func->get_parameters().begin(), func->get_parameters().end(), func );
    357                 fixFunctionList( func->get_returnVals().begin(), func->get_returnVals().end(), func );
     322                fixFunctionList( func->get_parameters(), func );
     323                fixFunctionList( func->get_returnVals(), func );
    358324                Visitor::visit( func );
    359325        }
     
    418384
    419385        void Pass2::visit( StructDecl *structDecl ) {
     386                // visit struct members first so that the types of self-referencing members are updated properly
     387                Parent::visit( structDecl );
    420388                if ( ! structDecl->get_members().empty() ) {
    421389                        ForwardStructsType::iterator fwds = forwardStructs.find( structDecl->get_name() );
     
    427395                        } // if
    428396                } // if
    429                 Indexer::visit( structDecl );
    430397        }
    431398
    432399        void Pass2::visit( UnionDecl *unionDecl ) {
     400                Parent::visit( unionDecl );
    433401                if ( ! unionDecl->get_members().empty() ) {
    434402                        ForwardUnionsType::iterator fwds = forwardUnions.find( unionDecl->get_name() );
     
    440408                        } // if
    441409                } // if
    442                 Indexer::visit( unionDecl );
    443410        }
    444411
     
    503470        }
    504471
    505         static const std::list< std::string > noLabels;
    506 
    507         void AutogenerateRoutines::autogenerateRoutines( std::list< Declaration * > &translationUnit ) {
    508                 AutogenerateRoutines visitor;
    509                 acceptAndAdd( translationUnit, visitor, false );
    510         }
    511 
    512         template< typename OutputIterator >
    513         void makeScalarAssignment( ObjectDecl *srcParam, ObjectDecl *dstParam, DeclarationWithType *member, OutputIterator out ) {
    514                 ObjectDecl *obj = dynamic_cast<ObjectDecl *>( member );
    515                 // unnamed bit fields are not copied as they cannot be accessed
    516                 if ( obj != NULL && obj->get_name() == "" && obj->get_bitfieldWidth() != NULL ) return;
    517 
    518                 UntypedExpr *assignExpr = new UntypedExpr( new NameExpr( "?=?" ) );
    519 
    520                 UntypedExpr *derefExpr = new UntypedExpr( new NameExpr( "*?" ) );
    521                 derefExpr->get_args().push_back( new VariableExpr( dstParam ) );
    522 
    523                 // do something special for unnamed members
    524                 Expression *dstselect = new AddressExpr( new MemberExpr( member, derefExpr ) );
    525                 assignExpr->get_args().push_back( dstselect );
    526 
    527                 Expression *srcselect = new MemberExpr( member, new VariableExpr( srcParam ) );
    528                 assignExpr->get_args().push_back( srcselect );
    529 
    530                 *out++ = new ExprStmt( noLabels, assignExpr );
    531         }
    532 
    533         template< typename OutputIterator >
    534         void makeArrayAssignment( ObjectDecl *srcParam, ObjectDecl *dstParam, DeclarationWithType *member, ArrayType *array, OutputIterator out ) {
    535                 static UniqueName indexName( "_index" );
    536 
    537                 // for a flexible array member nothing is done -- user must define own assignment
    538                 if ( ! array->get_dimension() ) return;
    539 
    540                 ObjectDecl *index = new ObjectDecl( indexName.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 );
    541                 *out++ = new DeclStmt( noLabels, index );
    542 
    543                 UntypedExpr *init = new UntypedExpr( new NameExpr( "?=?" ) );
    544                 init->get_args().push_back( new AddressExpr( new VariableExpr( index ) ) );
    545                 init->get_args().push_back( new NameExpr( "0" ) );
    546                 Statement *initStmt = new ExprStmt( noLabels, init );
    547                 std::list<Statement *> initList;
    548                 initList.push_back( initStmt );
    549 
    550                 UntypedExpr *cond = new UntypedExpr( new NameExpr( "?<?" ) );
    551                 cond->get_args().push_back( new VariableExpr( index ) );
    552                 cond->get_args().push_back( array->get_dimension()->clone() );
    553 
    554                 UntypedExpr *inc = new UntypedExpr( new NameExpr( "++?" ) );
    555                 inc->get_args().push_back( new AddressExpr( new VariableExpr( index ) ) );
    556 
    557                 UntypedExpr *assignExpr = new UntypedExpr( new NameExpr( "?=?" ) );
    558 
    559                 UntypedExpr *derefExpr = new UntypedExpr( new NameExpr( "*?" ) );
    560                 derefExpr->get_args().push_back( new VariableExpr( dstParam ) );
    561 
    562                 Expression *dstselect = new MemberExpr( member, derefExpr );
    563                 UntypedExpr *dstIndex = new UntypedExpr( new NameExpr( "?+?" ) );
    564                 dstIndex->get_args().push_back( dstselect );
    565                 dstIndex->get_args().push_back( new VariableExpr( index ) );
    566                 assignExpr->get_args().push_back( dstIndex );
    567 
    568                 Expression *srcselect = new MemberExpr( member, new VariableExpr( srcParam ) );
    569                 UntypedExpr *srcIndex = new UntypedExpr( new NameExpr( "?[?]" ) );
    570                 srcIndex->get_args().push_back( srcselect );
    571                 srcIndex->get_args().push_back( new VariableExpr( index ) );
    572                 assignExpr->get_args().push_back( srcIndex );
    573 
    574                 *out++ = new ForStmt( noLabels, initList, cond, inc, new ExprStmt( noLabels, assignExpr ) );
    575         }
    576 
    577         template< typename OutputIterator >
    578         void makeUnionFieldsAssignment( ObjectDecl *srcParam, ObjectDecl *dstParam, UnionInstType *unionType, OutputIterator out ) {
    579                 UntypedExpr *copy = new UntypedExpr( new NameExpr( "__builtin_memcpy" ) );
    580                 copy->get_args().push_back( new VariableExpr( dstParam ) );
    581                 copy->get_args().push_back( new AddressExpr( new VariableExpr( srcParam ) ) );
    582                 copy->get_args().push_back( new SizeofExpr( unionType ) );
    583 
    584                 *out++ = new ExprStmt( noLabels, copy );
    585         }
    586 
    587         //E ?=?(E volatile*, int),
    588         //  ?=?(E _Atomic volatile*, int);
    589         void makeEnumAssignment( EnumDecl *enumDecl, EnumInstType *refType, unsigned int functionNesting, std::list< Declaration * > &declsToAdd ) {
    590                 FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    591 
    592                 ObjectDecl *returnVal = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
    593                 assignType->get_returnVals().push_back( returnVal );
    594 
    595                 // need two assignment operators with different types
    596                 FunctionType * assignType2 = assignType->clone();
    597 
    598                 // E ?=?(E volatile *, E)
    599                 Type *etype = refType->clone();
    600                 // etype->get_qualifiers() += Type::Qualifiers(false, true, false, false, false, false);
    601 
    602                 ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), etype ), 0 );
    603                 assignType->get_parameters().push_back( dstParam );
    604 
    605                 ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, etype->clone(), 0 );
    606                 assignType->get_parameters().push_back( srcParam );
    607 
    608                 // E ?=?(E volatile *, int)
    609                 assignType2->get_parameters().push_back( dstParam->clone() );
    610                 BasicType * paramType = new BasicType(Type::Qualifiers(), BasicType::SignedInt);
    611                 ObjectDecl *srcParam2 = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, paramType, 0 );
    612                 assignType2->get_parameters().push_back( srcParam2 );
    613 
    614                 // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    615                 // because each unit generates copies of the default routines for each aggregate.
    616 
    617                 // since there is no definition, these should not be inline
    618                 // make these intrinsic so that the code generator does not make use of them
    619                 FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::Intrinsic, assignType, 0, false, false );
    620                 assignDecl->fixUniqueId();
    621                 FunctionDecl *assignDecl2 = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::Intrinsic, assignType2, 0, false, false );
    622                 assignDecl2->fixUniqueId();
    623 
    624                 // these should be built in the same way that the prelude
    625                 // functions are, so build a list containing the prototypes
    626                 // and allow MakeLibCfa to autogenerate the bodies.
    627                 std::list< Declaration * > assigns;
    628                 assigns.push_back( assignDecl );
    629                 assigns.push_back( assignDecl2 );
    630 
    631                 LibCfa::makeLibCfa( assigns );
    632 
    633                 // need to remove the prototypes, since this may be nested in a routine
    634                 for (int start = 0, end = assigns.size()/2; start < end; start++) {
    635                         delete assigns.front();
    636                         assigns.pop_front();
    637                 } // for
    638 
    639                 declsToAdd.insert( declsToAdd.begin(), assigns.begin(), assigns.end() );
    640         }
    641 
    642         /// Clones a reference type, replacing any parameters it may have with a clone of the provided list
    643         template< typename GenericInstType >
    644         GenericInstType *cloneWithParams( GenericInstType *refType, const std::list< Expression* >& params ) {
    645                 GenericInstType *clone = refType->clone();
    646                 clone->get_parameters().clear();
    647                 cloneAll( params, clone->get_parameters() );
    648                 return clone;
    649         }
    650 
    651         /// Creates a new type decl that's the same as src, but renamed and with only the ?=? assertion (for complete types only)
    652         TypeDecl *cloneAndRename( TypeDecl *src, const std::string &name ) {
    653                 TypeDecl *dst = new TypeDecl( name, src->get_storageClass(), 0, src->get_kind() );
    654 
    655                 if ( src->get_kind() == TypeDecl::Any ) {
    656                         // just include assignment operator assertion
    657                         TypeInstType *assignParamType = new TypeInstType( Type::Qualifiers(), name, dst );
    658                         FunctionType *assignFunctionType = new FunctionType( Type::Qualifiers(), false );
    659                         assignFunctionType->get_returnVals().push_back(
    660                                 new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, assignParamType->clone(), 0 ) );
    661                         assignFunctionType->get_parameters().push_back(
    662                                 new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), assignParamType->clone() ), 0 ) );
    663                         assignFunctionType->get_parameters().push_back(
    664                                 new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, assignParamType, 0 ) );
    665                         FunctionDecl *assignAssert = new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignFunctionType, 0, false, false );
    666                         dst->get_assertions().push_back( assignAssert );
    667                 }
    668 
    669                 return dst;
    670         }
    671 
    672         Declaration *makeStructAssignment( StructDecl *aggregateDecl, StructInstType *refType, unsigned int functionNesting ) {
    673                 FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    674 
    675                 // Make function polymorphic in same parameters as generic struct, if applicable
    676                 bool isGeneric = false;  // NOTE this flag is an incredibly ugly kludge; we should fix the assignment signature instead (ditto for union)
    677                 std::list< TypeDecl* >& genericParams = aggregateDecl->get_parameters();
    678                 std::list< Expression* > structParams;  // List of matching parameters to put on types
    679                 TypeSubstitution genericSubs; // Substitutions to make to member types of struct
    680                 for ( std::list< TypeDecl* >::const_iterator param = genericParams.begin(); param != genericParams.end(); ++param ) {
    681                         isGeneric = true;
    682                         TypeDecl *typeParam = cloneAndRename( *param, "_autoassign_" + aggregateDecl->get_name() + "_" + (*param)->get_name() );
    683                         assignType->get_forall().push_back( typeParam );
    684                         TypeInstType *newParamType = new TypeInstType( Type::Qualifiers(), typeParam->get_name(), typeParam );
    685                         genericSubs.add( (*param)->get_name(), newParamType );
    686                         structParams.push_back( new TypeExpr( newParamType ) );
    687                 }
    688 
    689                 ObjectDecl *returnVal = new ObjectDecl( "_ret", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, cloneWithParams( refType, structParams ), 0 );
    690                 assignType->get_returnVals().push_back( returnVal );
    691 
    692                 ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), cloneWithParams( refType, structParams ) ), 0 );
    693                 assignType->get_parameters().push_back( dstParam );
    694 
    695                 ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, cloneWithParams( refType, structParams ), 0 );
    696                 assignType->get_parameters().push_back( srcParam );
    697 
    698                 // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    699                 // because each unit generates copies of the default routines for each aggregate.
    700                 FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true, false );
    701                 assignDecl->fixUniqueId();
    702 
    703                 for ( std::list< Declaration * >::const_iterator member = aggregateDecl->get_members().begin(); member != aggregateDecl->get_members().end(); ++member ) {
    704                         if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( *member ) ) {
    705                                 // query the type qualifiers of this field and skip assigning it if it is marked const.
    706                                 // If it is an array type, we need to strip off the array layers to find its qualifiers.
    707                                 Type * type = dwt->get_type();
    708                                 while ( ArrayType * at = dynamic_cast< ArrayType * >( type ) ) {
    709                                         type = at->get_base();
    710                                 }
    711 
    712                                 if ( type->get_qualifiers().isConst ) {
    713                                         // don't assign const members
    714                                         continue;
    715                                 }
    716 
    717                                 if ( isGeneric ) {
    718                                         // rewrite member type in terms of the type variables on this operator
    719                                         DeclarationWithType *fixedMember = dwt->clone();
    720                                         genericSubs.apply( fixedMember );
    721 
    722                                         // assign to both destination and return value
    723                                         if ( ArrayType *array = dynamic_cast< ArrayType * >( fixedMember->get_type() ) ) {
    724                                                 makeArrayAssignment( srcParam, dstParam, fixedMember, array, back_inserter( assignDecl->get_statements()->get_kids() ) );
    725                                                 makeArrayAssignment( srcParam, returnVal, fixedMember, array, back_inserter( assignDecl->get_statements()->get_kids() ) );
    726                                         } else {
    727                                                 makeScalarAssignment( srcParam, dstParam, fixedMember, back_inserter( assignDecl->get_statements()->get_kids() ) );
    728                                                 makeScalarAssignment( srcParam, returnVal, fixedMember, back_inserter( assignDecl->get_statements()->get_kids() ) );
    729                                         } // if
    730                                 } else {
    731                                         // assign to destination
    732                                         if ( ArrayType *array = dynamic_cast< ArrayType * >( dwt->get_type() ) ) {
    733                                                 makeArrayAssignment( srcParam, dstParam, dwt, array, back_inserter( assignDecl->get_statements()->get_kids() ) );
    734                                         } else {
    735                                                 makeScalarAssignment( srcParam, dstParam, dwt, back_inserter( assignDecl->get_statements()->get_kids() ) );
    736                                         } // if
    737                                 } // if
    738                         } // if
    739                 } // for
    740                 if ( ! isGeneric ) assignDecl->get_statements()->get_kids().push_back( new ReturnStmt( noLabels, new VariableExpr( srcParam ) ) );
    741 
    742                 return assignDecl;
    743         }
    744 
    745         Declaration *makeUnionAssignment( UnionDecl *aggregateDecl, UnionInstType *refType, unsigned int functionNesting ) {
    746                 FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    747 
    748                 // Make function polymorphic in same parameters as generic union, if applicable
    749                 bool isGeneric = false;  // NOTE this flag is an incredibly ugly kludge; we should fix the assignment signature instead (ditto for struct)
    750                 std::list< TypeDecl* >& genericParams = aggregateDecl->get_parameters();
    751                 std::list< Expression* > unionParams;  // List of matching parameters to put on types
    752                 for ( std::list< TypeDecl* >::const_iterator param = genericParams.begin(); param != genericParams.end(); ++param ) {
    753                         isGeneric = true;
    754                         TypeDecl *typeParam = cloneAndRename( *param, "_autoassign_" + aggregateDecl->get_name() + "_" + (*param)->get_name() );
    755                         assignType->get_forall().push_back( typeParam );
    756                         unionParams.push_back( new TypeExpr( new TypeInstType( Type::Qualifiers(), typeParam->get_name(), typeParam ) ) );
    757                 }
    758 
    759                 ObjectDecl *returnVal = new ObjectDecl( "_ret", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, cloneWithParams( refType, unionParams ), 0 );
    760                 assignType->get_returnVals().push_back( returnVal );
    761 
    762                 ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), cloneWithParams( refType, unionParams ) ), 0 );
    763                 assignType->get_parameters().push_back( dstParam );
    764 
    765                 ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, cloneWithParams( refType, unionParams ), 0 );
    766                 assignType->get_parameters().push_back( srcParam );
    767 
    768                 // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    769                 // because each unit generates copies of the default routines for each aggregate.
    770                 FunctionDecl *assignDecl = new FunctionDecl( "?=?",  functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true, false );
    771                 assignDecl->fixUniqueId();
    772 
    773                 makeUnionFieldsAssignment( srcParam, dstParam, cloneWithParams( refType, unionParams ), back_inserter( assignDecl->get_statements()->get_kids() ) );
    774                 if ( isGeneric ) makeUnionFieldsAssignment( srcParam, returnVal, cloneWithParams( refType, unionParams ), back_inserter( assignDecl->get_statements()->get_kids() ) );
    775 
    776                 if ( ! isGeneric ) assignDecl->get_statements()->get_kids().push_back( new ReturnStmt( noLabels, new VariableExpr( srcParam ) ) );
    777 
    778                 return assignDecl;
    779         }
    780 
    781         void AutogenerateRoutines::visit( EnumDecl *enumDecl ) {
    782                 if ( ! enumDecl->get_members().empty() ) {
    783                         EnumInstType *enumInst = new EnumInstType( Type::Qualifiers(), enumDecl->get_name() );
    784                         // enumInst->set_baseEnum( enumDecl );
    785                         // declsToAdd.push_back(
    786                         makeEnumAssignment( enumDecl, enumInst, functionNesting, declsToAdd );
    787                 }
    788         }
    789 
    790         void AutogenerateRoutines::visit( StructDecl *structDecl ) {
    791                 if ( ! structDecl->get_members().empty() && structsDone.find( structDecl->get_name() ) == structsDone.end() ) {
    792                         StructInstType structInst( Type::Qualifiers(), structDecl->get_name() );
    793                         structInst.set_baseStruct( structDecl );
    794                         declsToAdd.push_back( makeStructAssignment( structDecl, &structInst, functionNesting ) );
    795                         structsDone.insert( structDecl->get_name() );
    796                 } // if
    797         }
    798 
    799         void AutogenerateRoutines::visit( UnionDecl *unionDecl ) {
    800                 if ( ! unionDecl->get_members().empty() ) {
    801                         UnionInstType unionInst( Type::Qualifiers(), unionDecl->get_name() );
    802                         unionInst.set_baseUnion( unionDecl );
    803                         declsToAdd.push_back( makeUnionAssignment( unionDecl, &unionInst, functionNesting ) );
    804                 } // if
    805         }
    806 
    807         void AutogenerateRoutines::visit( TypeDecl *typeDecl ) {
    808                 CompoundStmt *stmts = 0;
    809                 TypeInstType *typeInst = new TypeInstType( Type::Qualifiers(), typeDecl->get_name(), false );
    810                 typeInst->set_baseType( typeDecl );
    811                 ObjectDecl *src = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, typeInst->clone(), 0 );
    812                 ObjectDecl *dst = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), typeInst->clone() ), 0 );
    813                 if ( typeDecl->get_base() ) {
    814                         stmts = new CompoundStmt( std::list< Label >() );
    815                         UntypedExpr *assign = new UntypedExpr( new NameExpr( "?=?" ) );
    816                         assign->get_args().push_back( new CastExpr( new VariableExpr( dst ), new PointerType( Type::Qualifiers(), typeDecl->get_base()->clone() ) ) );
    817                         assign->get_args().push_back( new CastExpr( new VariableExpr( src ), typeDecl->get_base()->clone() ) );
    818                         stmts->get_kids().push_back( new ReturnStmt( std::list< Label >(), assign ) );
    819                 } // if
    820                 FunctionType *type = new FunctionType( Type::Qualifiers(), false );
    821                 type->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, typeInst, 0 ) );
    822                 type->get_parameters().push_back( dst );
    823                 type->get_parameters().push_back( src );
    824                 FunctionDecl *func = new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::AutoGen, type, stmts, false, false );
    825                 declsToAdd.push_back( func );
    826         }
    827 
    828         void addDecls( std::list< Declaration * > &declsToAdd, std::list< Statement * > &statements, std::list< Statement * >::iterator i ) {
    829                 for ( std::list< Declaration * >::iterator decl = declsToAdd.begin(); decl != declsToAdd.end(); ++decl ) {
    830                         statements.insert( i, new DeclStmt( noLabels, *decl ) );
    831                 } // for
    832                 declsToAdd.clear();
    833         }
    834 
    835         void AutogenerateRoutines::visit( FunctionType *) {
    836                 // ensure that we don't add assignment ops for types defined as part of the function
    837         }
    838 
    839         void AutogenerateRoutines::visit( PointerType *) {
    840                 // ensure that we don't add assignment ops for types defined as part of the pointer
    841         }
    842 
    843         void AutogenerateRoutines::visit( TraitDecl *) {
    844                 // ensure that we don't add assignment ops for types defined as part of the context
    845         }
    846 
    847         template< typename StmtClass >
    848         inline void AutogenerateRoutines::visitStatement( StmtClass *stmt ) {
    849                 std::set< std::string > oldStructs = structsDone;
    850                 addVisit( stmt, *this );
    851                 structsDone = oldStructs;
    852         }
    853 
    854         void AutogenerateRoutines::visit( FunctionDecl *functionDecl ) {
    855                 maybeAccept( functionDecl->get_functionType(), *this );
    856                 acceptAll( functionDecl->get_oldDecls(), *this );
    857                 functionNesting += 1;
    858                 maybeAccept( functionDecl->get_statements(), *this );
    859                 functionNesting -= 1;
    860         }
    861 
    862         void AutogenerateRoutines::visit( CompoundStmt *compoundStmt ) {
    863                 visitStatement( compoundStmt );
    864         }
    865 
    866         void AutogenerateRoutines::visit( SwitchStmt *switchStmt ) {
    867                 visitStatement( switchStmt );
    868         }
    869 
    870         void AutogenerateRoutines::visit( ChooseStmt *switchStmt ) {
    871                 visitStatement( switchStmt );
    872         }
    873 
    874         // void AutogenerateRoutines::visit( CaseStmt *caseStmt ) {
    875         //      visitStatement( caseStmt );
    876         // }
    877 
    878472        void ReturnChecker::checkFunctionReturns( std::list< Declaration * > & translationUnit ) {
    879473                ReturnChecker checker;
     
    889483
    890484        void ReturnChecker::visit( ReturnStmt * returnStmt ) {
     485                // Previously this also checked for the existence of an expr paired with no return values on
     486                // the  function return type. This is incorrect, since you can have an expression attached to
     487                // a return statement in a void-returning function in C. The expression is treated as if it
     488                // were cast to void.
    891489                if ( returnStmt->get_expr() == NULL && returnVals.size() != 0 ) {
    892490                        throw SemanticError( "Non-void function returns no values: " , returnStmt );
    893                 } else if ( returnStmt->get_expr() != NULL && returnVals.size() == 0 ) {
    894                         throw SemanticError( "void function returns values: " , returnStmt );
    895491                }
    896492        }
     
    1033629                return aggDecl;
    1034630        }
    1035        
     631
    1036632        template<typename AggDecl>
    1037633        void EliminateTypedef::addImplicitTypedef( AggDecl * aggDecl ) {
     
    1072668        }
    1073669
     670        void VerifyCtorDtor::verify( std::list< Declaration * > & translationUnit ) {
     671                VerifyCtorDtor verifier;
     672                acceptAll( translationUnit, verifier );
     673        }
     674
     675        void VerifyCtorDtor::visit( FunctionDecl * funcDecl ) {
     676                FunctionType * funcType = funcDecl->get_functionType();
     677                std::list< DeclarationWithType * > &returnVals = funcType->get_returnVals();
     678                std::list< DeclarationWithType * > &params = funcType->get_parameters();
     679
     680                if ( funcDecl->get_name() == "?{}" || funcDecl->get_name() == "^?{}" ) {
     681                        if ( params.size() == 0 ) {
     682                                throw SemanticError( "Constructors and destructors require at least one parameter ", funcDecl );
     683                        }
     684                        if ( ! dynamic_cast< PointerType * >( params.front()->get_type() ) ) {
     685                                throw SemanticError( "First parameter of a constructor or destructor must be a pointer ", funcDecl );
     686                        }
     687                        if ( returnVals.size() != 0 ) {
     688                                throw SemanticError( "Constructors and destructors cannot have explicit return values ", funcDecl );
     689                        }
     690                }
     691
     692                Visitor::visit( funcDecl );
     693                // original idea: modify signature of ctor/dtors and insert appropriate return statements
     694                // to cause desired behaviour
     695                // new idea: add comma exprs to every ctor call to produce first parameter.
     696                // this requires some memoization of the first parameter, because it can be a
     697                // complicated expression with side effects (see: malloc). idea: add temporary variable
     698                // that is assigned address of constructed object in ctor argument position and
     699                // return the temporary. It should also be done after all implicit ctors are
     700                // added, so not in this pass!
     701        }
     702
    1074703        DeclarationWithType * CompoundLiteral::mutate( ObjectDecl *objectDecl ) {
    1075704                storageclass = objectDecl->get_storageClass();
  • src/SymTab/module.mk

    r1b5c81ed rf80e0218  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## module.mk -- 
     8## module.mk --
    99##
    1010## Author           : Richard C. Bilson
     
    2020       SymTab/FixFunction.cc \
    2121       SymTab/ImplementationType.cc \
    22        SymTab/TypeEquality.cc
     22       SymTab/TypeEquality.cc \
     23       SymTab/Autogen.cc
  • src/SynTree/AddressExpr.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // AddressExpr.cc -- 
     7// AddressExpr.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 23:54:44 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 16:52:51 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Apr 26 12:35:13 2016
    1313// Update Count     : 6
    1414//
     
    3232
    3333void AddressExpr::print( std::ostream &os, int indent ) const {
    34         os << std::string( indent, ' ' ) << "Address of:" << std::endl;
     34        os << "Address of:" << std::endl;
    3535        if ( arg ) {
    36                 arg->print( os, indent+2 );
     36                os << std::string( indent+2, ' ' );
     37    arg->print( os, indent+2 );
    3738        } // if
    3839}
  • src/SynTree/ApplicationExpr.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // ApplicationExpr.cc.cc -- 
     7// ApplicationExpr.cc.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 07:54:17 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Apr 26 12:41:06 2016
    1313// Update Count     : 4
    1414//
     
    4747        FunctionType *function = dynamic_cast< FunctionType* >( pointer->get_base() );
    4848        assert( function );
    49        
     49
    5050        for ( std::list< DeclarationWithType* >::const_iterator i = function->get_returnVals().begin(); i != function->get_returnVals().end(); ++i ) {
    5151                get_results().push_back( (*i)->get_type()->clone() );
     
    6464
    6565void ApplicationExpr::print( std::ostream &os, int indent ) const {
    66         os << std::string( indent, ' ' ) << "Application of" << std::endl;
     66        os << "Application of" << std::endl << std::string(indent+2, ' ');
    6767        function->print( os, indent+2 );
    6868        if ( ! args.empty() ) {
  • src/SynTree/ArrayType.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // ArrayType.cc -- 
     7// ArrayType.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 14:19:07 2015
     12// Last Modified On : Thu May 12 14:07:16 2016
    1313// Update Count     : 11
    1414//
     
    5151        if ( dimension ) {
    5252                os << " with dimension of ";
    53                 dimension->print( os, 0 );
     53                dimension->print( os, indent );
    5454        } // if
    5555}
  • src/SynTree/CommaExpr.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // CommaExpr.cc -- 
     7// CommaExpr.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 08:09:58 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Mon May 02 15:19:44 2016
    1313// Update Count     : 1
    1414//
     
    2020CommaExpr::CommaExpr( Expression *arg1, Expression *arg2, Expression *_aname )
    2121                : Expression( _aname ), arg1( arg1 ), arg2( arg2 ) {
     22        // xxx - result of a comma expression is never an lvalue, so should set lvalue
     23        // to false on all result types. Actually doing this causes some strange things
     24        // to happen in later passes (particularly, Specialize, Lvalue, and Box). This needs to be looked into.
    2225        cloneAll( arg2->get_results(), get_results() );
     26        // for ( Type *& type : get_results() ) {
     27        //      type->set_isLvalue( false );
     28        // }
    2329}
    2430
     
    3339
    3440void CommaExpr::print( std::ostream &os, int indent ) const {
    35         os << std::string( indent, ' ' ) << "Comma Expression:" << std::endl;
     41        os << "Comma Expression:" << std::endl;
     42        os << std::string( indent+2, ' ' );
    3643        arg1->print( os, indent+2 );
    3744        os << std::endl;
     45        os << std::string( indent+2, ' ' );
    3846        arg2->print( os, indent+2 );
    3947        Expression::print( os, indent );
  • src/SynTree/CompoundStmt.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // XXX.cc -- 
     7// XXX.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 11:37:49 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Mon May 02 15:19:17 2016
    1313// Update Count     : 3
    1414//
     
    1818#include <algorithm>
    1919#include <functional>
     20#include "Expression.h"
     21#include "Declaration.h"
    2022
    2123using std::string;
    2224using std::endl;
     25
     26class VarExprReplacer : public Visitor {
     27public:
     28  typedef std::map< DeclarationWithType *, DeclarationWithType * > DeclMap;
     29private:
     30  const DeclMap & declMap;
     31public:
     32  VarExprReplacer( const DeclMap & declMap ) : declMap( declMap ) {}
     33
     34  // replace variable with new node from decl map
     35  virtual void visit( VariableExpr * varExpr ) {
     36    if ( declMap.count( varExpr->get_var() ) ) {
     37      varExpr->set_var( declMap.at( varExpr->get_var() ) );
     38    }
     39  }
     40};
     41
    2342
    2443CompoundStmt::CompoundStmt( std::list<Label> labels ) : Statement( labels ) {
     
    2746CompoundStmt::CompoundStmt( const CompoundStmt &other ) : Statement( other ) {
    2847        cloneAll( other.kids, kids );
     48
     49  // when cloning a compound statement, we may end up cloning declarations which
     50  // are referred to by VariableExprs throughout the block. Cloning a VariableExpr
     51  // does a shallow copy, so the VariableExpr will end up pointing to the original
     52  // declaration. If the original declaration is deleted, e.g. because the original
     53  // CompoundStmt is deleted, then we have a dangling pointer. To avoid this case,
     54  // find all DeclarationWithType nodes (since a VariableExpr must point to a
     55  // DeclarationWithType) in the original CompoundStmt and map them to the cloned
     56  // node in the new CompoundStmt ('this'), then replace the Declarations referred to
     57  // by each VariableExpr according to the constructed map. Note that only the declarations
     58  // in the current level are collected into the map, because child CompoundStmts will
     59  // recursively execute this routine. There may be more efficient ways of doing
     60  // this.
     61  VarExprReplacer::DeclMap declMap;
     62  std::list< Statement * >::const_iterator origit = other.kids.begin();
     63  for ( Statement * s : kids ) {
     64    assert( origit != other.kids.end() );
     65    if ( DeclStmt * declStmt = dynamic_cast< DeclStmt * >( s ) ) {
     66      DeclStmt * origDeclStmt = dynamic_cast< DeclStmt * >( *origit );
     67      assert( origDeclStmt );
     68      if ( DeclarationWithType * dwt = dynamic_cast< DeclarationWithType * > ( declStmt->get_decl() ) ) {
     69        DeclarationWithType * origdwt = dynamic_cast< DeclarationWithType * > ( origDeclStmt->get_decl() );
     70        assert( origdwt );
     71        declMap[ origdwt ] = dwt;
     72      }
     73    }
     74  }
     75  if ( ! declMap.empty() ) {
     76    VarExprReplacer replacer( declMap );
     77    accept( replacer );
     78  }
    2979}
    3080
     
    3484
    3585void CompoundStmt::print( std::ostream &os, int indent ) const {
    36         os << string( indent, ' ' ) << "CompoundStmt" << endl ;
     86        os << "CompoundStmt" << endl ;
    3787        printAll( kids, os, indent + 2 );
    3888}
  • src/SynTree/Constant.cc

    r1b5c81ed rf80e0218  
    3030Constant::~Constant() { delete type; }
    3131
    32 Constant Constant::from( int i ) {
     32Constant Constant::from_int( int i ) {
    3333        return Constant( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), std::to_string( i ) );
    3434}
    3535
    36 Constant Constant::from( unsigned long i ) {
     36Constant Constant::from_ulong( unsigned long i ) {
    3737        return Constant( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), std::to_string( i ) );
    3838}
    3939
    40 Constant Constant::from( double d ) {
     40Constant Constant::from_double( double d ) {
    4141        return Constant( new BasicType( Type::Qualifiers(), BasicType::Double ), std::to_string( d ) );
    4242}
  • src/SynTree/Constant.h

    r1b5c81ed rf80e0218  
    3333
    3434        /// generates an integer constant of the given int
    35         static Constant from( int i );
     35        static Constant from_int( int i );
    3636        /// generates an integer constant of the given unsigned long int
    37         static Constant from( unsigned long i );
     37        static Constant from_ulong( unsigned long i );
    3838        /// generates a floating point constant of the given double
    39         static Constant from( double d );
     39        static Constant from_double( double d );
    4040
    4141        virtual Constant *clone() const;
  • src/SynTree/Declaration.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Declaration.h -- 
     7// Declaration.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:28:11 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri May 06 16:26:12 2016
    1313// Update Count     : 33
    1414//
     
    2222#include "Parser/LinkageSpec.h"
    2323#include "Parser/ParseNode.h"
     24#include <string>
    2425
    2526class Declaration {
     
    6768        void set_mangleName( std::string newValue ) { mangleName = newValue; }
    6869
     70        std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }
     71
     72        int get_scopeLevel() const { return scopeLevel; }
     73        void set_scopeLevel( int newValue ) { scopeLevel = newValue; }
     74
    6975        virtual DeclarationWithType *clone() const = 0;
    7076        virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0;
     
    7581        // this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2
    7682        std::string mangleName;
     83        // need to remember the scope level at which the variable was declared, so that
     84        // shadowed identifiers can be accessed
     85        int scopeLevel = 0;
    7786};
    7887
     
    106115        typedef DeclarationWithType Parent;
    107116  public:
    108         FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn );
     117        FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, const std::list< Attribute * > attributes = std::list< Attribute * >() );
    109118        FunctionDecl( const FunctionDecl &other );
    110119        virtual ~FunctionDecl();
     
    119128        std::list< std::string >& get_oldIdents() { return oldIdents; }
    120129        std::list< Declaration* >& get_oldDecls() { return oldDecls; }
     130        std::list< Attribute * >& get_attributes() { return attributes; }
    121131
    122132        virtual FunctionDecl *clone() const { return new FunctionDecl( *this ); }
     
    130140        std::list< std::string > oldIdents;
    131141        std::list< Declaration* > oldDecls;
     142        std::list< Attribute * > attributes;
    132143};
    133144
  • src/SynTree/DeclarationWithType.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // DeclarationWithType.cc -- 
     7// DeclarationWithType.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 08:08:07 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Mon Apr 11 15:35:27 2016
    1313// Update Count     : 3
    1414//
     
    2323
    2424DeclarationWithType::DeclarationWithType( const DeclarationWithType &other )
    25                 : Declaration( other ), mangleName( other.mangleName ) {
     25                : Declaration( other ), mangleName( other.mangleName ), scopeLevel( other.scopeLevel ) {
    2626}
    2727
  • src/SynTree/Expression.cc

    r1b5c81ed rf80e0218  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Apr  8 17:16:23 2016
    13 // Update Count     : 40
     12// Last Modified On : Mon Jun 13 16:03:39 2016
     13// Update Count     : 42
    1414//
    1515
     
    3232Expression::Expression( Expression *_aname ) : env( 0 ), argName( _aname ) {}
    3333
    34 Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ) {
     34Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ), extension( other.extension ) {
    3535        cloneAll( other.results, results );
    3636}
     
    6060                argName->print( os, indent+2 );
    6161        } // if
     62
     63        if ( extension ) {
     64                os << std::string( indent, ' ' ) << "with extension:";
     65        } // if
    6266}
    6367
     
    7276
    7377void ConstantExpr::print( std::ostream &os, int indent ) const {
    74         os << std::string( indent, ' ' ) << "constant expression " ;
     78        os << "constant expression " ;
    7579        constant.print( os );
    7680        Expression::print( os, indent );
    77         os << std::endl;
    7881}
    7982
    8083VariableExpr::VariableExpr( DeclarationWithType *_var, Expression *_aname ) : Expression( _aname ), var( _var ) {
     84        assert( var );
     85        assert( var->get_type() );
    8186        add_result( var->get_type()->clone() );
    8287        for ( std::list< Type* >::iterator i = get_results().begin(); i != get_results().end(); ++i ) {
     
    9398
    9499void VariableExpr::print( std::ostream &os, int indent ) const {
    95         os << std::string( indent, ' ' ) << "Variable Expression: ";
     100        os << "Variable Expression: ";
    96101
    97102        Declaration *decl = get_var();
     
    122127
    123128void SizeofExpr::print( std::ostream &os, int indent) const {
    124         os << std::string( indent, ' ' ) << "Sizeof Expression on: ";
     129        os << "Sizeof Expression on: ";
    125130
    126131        if (isType)
     
    295300
    296301void CastExpr::print( std::ostream &os, int indent ) const {
    297         os << std::string( indent, ' ' ) << "Cast of:" << std::endl;
     302        os << "Cast of:" << std::endl << std::string( indent+2, ' ' );
    298303        arg->print(os, indent+2);
    299304        os << std::endl << std::string( indent, ' ' ) << "to:" << std::endl;
     
    318323
    319324void UntypedMemberExpr::print( std::ostream &os, int indent ) const {
    320         os << std::string( indent, ' ' ) << "Member Expression, with field: " << get_member();
     325        os << "Untyped Member Expression, with field: " << get_member();
    321326
    322327        Expression *agg = get_aggregate();
    323         os << std::string( indent, ' ' ) << "from aggregate: ";
    324         if (agg != 0) agg->print(os, indent + 2);
     328        os << ", from aggregate: ";
     329        if (agg != 0) {
     330                os << std::string( indent + 2, ' ' );
     331                agg->print(os, indent + 2);
     332        }
     333        os << std::string( indent+2, ' ' );
    325334        Expression::print( os, indent );
    326335}
     
    345354
    346355void MemberExpr::print( std::ostream &os, int indent ) const {
    347         os << std::string( indent, ' ' ) << "Member Expression, with field: " << std::endl;
     356        os << "Member Expression, with field: " << std::endl;
    348357
    349358        assert( member );
     
    354363        Expression *agg = get_aggregate();
    355364        os << std::string( indent, ' ' ) << "from aggregate: " << std::endl;
    356         if (agg != 0) agg->print(os, indent + 2);
     365        if (agg != 0) {
     366                os << std::string( indent + 2, ' ' );
     367                agg->print(os, indent + 2);
     368        }
     369        os << std::string( indent+2, ' ' );
    357370        Expression::print( os, indent );
    358371}
     
    372385
    373386void UntypedExpr::print( std::ostream &os, int indent ) const {
    374         os << std::string( indent, ' ' ) << "Applying untyped: " << std::endl;
    375         function->print(os, indent + 4);
     387        os << "Applying untyped: " << std::endl;
     388        os << std::string( indent+2, ' ' );
     389        function->print(os, indent + 2);
    376390        os << std::string( indent, ' ' ) << "...to: " << std::endl;
    377         printArgs(os, indent + 4);
     391        printAll(args, os, indent + 2);
    378392        Expression::print( os, indent );
    379393}
     
    381395void UntypedExpr::printArgs( std::ostream &os, int indent ) const {
    382396        std::list<Expression *>::const_iterator i;
    383         for (i = args.begin(); i != args.end(); i++)
     397        for (i = args.begin(); i != args.end(); i++) {
     398                os << std::string(indent, ' ' );
    384399                (*i)->print(os, indent);
     400        }
    385401}
    386402
     
    393409
    394410void NameExpr::print( std::ostream &os, int indent ) const {
    395         os << std::string( indent, ' ' ) << "Name: " << get_name() << std::endl;
     411        os << "Name: " << get_name() << std::endl;
    396412        Expression::print( os, indent );
    397413}
     
    454470}
    455471
     472
     473ImplicitCopyCtorExpr::ImplicitCopyCtorExpr( ApplicationExpr * callExpr ) : callExpr( callExpr ) {
     474        assert( callExpr );
     475        cloneAll( callExpr->get_results(), results );
     476}
     477
     478ImplicitCopyCtorExpr::ImplicitCopyCtorExpr( const ImplicitCopyCtorExpr & other ) : Expression( other ), callExpr( maybeClone( other.callExpr ) ) {
     479        cloneAll( other.tempDecls, tempDecls );
     480        cloneAll( other.returnDecls, returnDecls );
     481        cloneAll( other.dtors, dtors );
     482}
     483
     484ImplicitCopyCtorExpr::~ImplicitCopyCtorExpr() {
     485        delete callExpr;
     486        deleteAll( tempDecls );
     487        deleteAll( returnDecls );
     488        deleteAll( dtors );
     489}
     490
     491void ImplicitCopyCtorExpr::print( std::ostream &os, int indent ) const {
     492        os << std::string( indent, ' ' ) <<  "Implicit Copy Constructor Expression: " << std::endl;
     493        assert( callExpr );
     494        callExpr->print( os, indent + 2 );
     495        os << std::endl << std::string( indent, ' ' ) << "with temporaries:" << std::endl;
     496        printAll(tempDecls, os, indent+2);
     497        os << std::endl << std::string( indent, ' ' ) << "with return temporaries:" << std::endl;
     498        printAll(returnDecls, os, indent+2);
     499        Expression::print( os, indent );
     500}
     501
    456502UntypedValofExpr::UntypedValofExpr( const UntypedValofExpr & other ) : Expression( other ), body ( maybeClone( other.body ) ) {}
    457503
  • src/SynTree/Expression.h

    r1b5c81ed rf80e0218  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Apr  8 17:18:06 2016
    13 // Update Count     : 21
     12// Last Modified On : Wed Jun  8 17:05:30 2016
     13// Update Count     : 22
    1414//
    1515
     
    2222#include "Mutator.h"
    2323#include "Constant.h"
     24#include "Common/UniqueName.h"
    2425
    2526/// Expression is the root type for all expressions
     
    3738        Expression *get_argName() const { return argName; }
    3839        void set_argName( Expression *name ) { argName = name; }
     40        bool get_extension() const { return extension; }
     41        void set_extension( bool exten ) { extension = exten; }
    3942
    4043        virtual Expression *clone() const = 0;
     
    4649        TypeSubstitution *env;
    4750        Expression* argName; // if expression is used as an argument, it can be "designated" by this name
     51        bool extension = false;
    4852};
    4953
     
    559563};
    560564
     565/// ImplicitCopyCtorExpr represents the application of a function to a set of parameters,
     566/// along with a set of copy constructor calls, one for each argument.
     567class ImplicitCopyCtorExpr : public Expression {
     568public:
     569        ImplicitCopyCtorExpr( ApplicationExpr * callExpr );
     570        ImplicitCopyCtorExpr( const ImplicitCopyCtorExpr & other );
     571        virtual ~ImplicitCopyCtorExpr();
     572
     573        ApplicationExpr *get_callExpr() const { return callExpr; }
     574        void set_callExpr( ApplicationExpr *newValue ) { callExpr = newValue; }
     575
     576        std::list< ObjectDecl * > & get_tempDecls() { return tempDecls; }
     577        void set_tempDecls( std::list< ObjectDecl * > newValue ) { tempDecls = newValue; }
     578
     579        std::list< ObjectDecl * > & get_returnDecls() { return returnDecls; }
     580        void set_returnDecls( std::list< ObjectDecl * > newValue ) { returnDecls = newValue; }
     581
     582        std::list< Expression * > & get_dtors() { return dtors; }
     583        void set_dtors( std::list< Expression * > newValue ) { dtors = newValue; }
     584
     585        virtual ImplicitCopyCtorExpr *clone() const { return new ImplicitCopyCtorExpr( *this ); }
     586        virtual void accept( Visitor &v ) { v.visit( this ); }
     587        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     588        virtual void print( std::ostream &os, int indent = 0 ) const;
     589  private:
     590        ApplicationExpr * callExpr;
     591        std::list< ObjectDecl * > tempDecls;
     592        std::list< ObjectDecl * > returnDecls;
     593        std::list< Expression * > dtors;
     594};
     595
    561596/// ValofExpr represents a GCC 'lambda expression'
    562597class UntypedValofExpr : public Expression {
  • src/SynTree/FunctionDecl.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // FunctionDecl.cc -- 
     7// FunctionDecl.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jul 13 18:11:44 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri May 06 15:59:48 2016
    1313// Update Count     : 19
    1414//
     
    1919#include "Statement.h"
    2020#include "Type.h"
     21#include "Attribute.h"
    2122#include "Common/utility.h"
    2223
    23 FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn )
    24                 : Parent( name, sc, linkage ), type( type ), statements( statements ) {
     24FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, std::list< Attribute * > attributes )
     25                : Parent( name, sc, linkage ), type( type ), statements( statements ), attributes( attributes ) {
    2526        set_isInline( isInline );
    2627        set_isNoreturn( isNoreturn );
     
    3334FunctionDecl::FunctionDecl( const FunctionDecl &other )
    3435        : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ) {
     36                cloneAll( other.attributes, attributes );
    3537}
    3638
     
    3840        delete type;
    3941        delete statements;
     42        deleteAll( attributes );
    4043}
    4144
     
    5255        using std::endl;
    5356        using std::string;
    54        
     57
    5558        if ( get_name() != "" ) {
    5659                os << get_name() << ": ";
     
    6568                os << "_Noreturn ";
    6669        } // if
     70
     71        printAll( attributes, os, indent );
     72
    6773        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    6874                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
     
    8793        if ( statements ) {
    8894                os << string( indent + 2, ' ' ) << "with body " << endl;
     95                os << string( indent + 4, ' ' );
    8996                statements->print( os, indent + 4 );
    9097        } // if
     
    94101        using std::endl;
    95102        using std::string;
    96        
     103
    97104        if ( get_name() != "" ) {
    98105                os << get_name() << ": ";
     
    104111                os << "_Noreturn ";
    105112        } // if
     113
     114        // xxx - should printShort print attributes?
     115
    106116        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    107117                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
  • src/SynTree/Initializer.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Initializer.cc -- 
     7// Initializer.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 14:05:25 2015
    13 // Update Count     : 14
     12// Last Modified On : Fri May 13 13:23:03 2016
     13// Update Count     : 28
    1414//
    1515
    1616#include "Initializer.h"
    1717#include "Expression.h"
     18#include "Statement.h"
    1819#include "Common/utility.h"
    1920
    20 Initializer::Initializer() {}
     21Initializer::Initializer( bool maybeConstructed ) : maybeConstructed( maybeConstructed ) {}
     22Initializer::Initializer( const Initializer & other ) : maybeConstructed( other.maybeConstructed ) {
     23}
     24
    2125
    2226Initializer::~Initializer() {}
     
    3135void Initializer::print( std::ostream &os, int indent ) {}
    3236
    33 SingleInit::SingleInit( Expression *v, std::list< Expression *> &_designators ) : value ( v ), designators( _designators ) {
     37SingleInit::SingleInit( Expression *v, const std::list< Expression *> &_designators, bool maybeConstructed ) : Initializer( maybeConstructed ), value ( v ), designators( _designators ) {
    3438}
    3539
    36 SingleInit::SingleInit( const SingleInit &other ) : value ( other.value ) {
     40SingleInit::SingleInit( const SingleInit &other ) : Initializer(other), value ( maybeClone( other.value ) ) {
    3741        cloneAll(other.designators, designators );
    3842}
    3943
    40 SingleInit::~SingleInit() {}
    41 
    42 SingleInit *SingleInit::clone() const { return new SingleInit( *this); }
     44SingleInit::~SingleInit() {
     45        deleteAll(designators);
     46}
    4347
    4448void SingleInit::print( std::ostream &os, int indent ) {
    4549        os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl;
     50        os << std::string(indent+4, ' ' );
    4651        value->print( os, indent+4 );
    4752
    4853        if ( ! designators.empty() ) {
    49                 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "   << std::endl;
     54                os << std::endl << std::string(indent + 2, ' ' ) << "designated by: " << std::endl;
    5055                for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) {
     56                        os << std::string(indent + 4, ' ' );
    5157                        ( *i )->print(os, indent + 4 );
    5258                }
     
    5460}
    5561
    56 ListInit::ListInit( std::list<Initializer*> &_initializers, std::list<Expression *> &_designators )
    57         : initializers( _initializers ), designators( _designators ) {
     62ListInit::ListInit( const std::list<Initializer*> &_initializers, const std::list<Expression *> &_designators, bool maybeConstructed )
     63        : Initializer( maybeConstructed ), initializers( _initializers ), designators( _designators ) {
    5864}
    5965
    60 ListInit::~ListInit() {}
    61 
    62 ListInit *ListInit::clone() const {
    63         return new ListInit( *this );
     66ListInit::~ListInit() {
     67        deleteAll( initializers );
     68        deleteAll( designators );
    6469}
    6570
    6671void ListInit::print( std::ostream &os, int indent ) {
    67         os << std::endl << std::string(indent, ' ') << "Compound initializer:  "; 
     72        os << std::endl << std::string(indent, ' ') << "Compound initializer:  ";
    6873        if ( ! designators.empty() ) {
    6974                os << std::string(indent + 2, ' ' ) << "designated by: [";
    7075                for ( std::list < Expression * >::iterator i = designators.begin();
    7176                          i != designators.end(); i++ ) {
    72                         ( *i )->print(os, indent + 4 ); 
     77                        ( *i )->print(os, indent + 4 );
    7378                } // for
    74        
     79
    7580                os << std::string(indent + 2, ' ' ) << "]";
    7681        } // if
    7782
    78         for ( std::list<Initializer *>::iterator i = initializers.begin(); i != initializers.end(); i++ ) 
     83        for ( std::list<Initializer *>::iterator i = initializers.begin(); i != initializers.end(); i++ )
    7984                (*i)->print( os, indent + 2 );
    8085}
     86
     87
     88ConstructorInit::ConstructorInit( Statement * ctor, Statement * dtor, Initializer * init ) : Initializer( true ), ctor( ctor ), dtor( dtor ), init( init ) {}
     89ConstructorInit::ConstructorInit( const ConstructorInit &other ) : Initializer( other ), ctor( maybeClone( other.ctor ) ), dtor( maybeClone( other.dtor ) ), init( maybeClone( other.init ) ) {
     90}
     91
     92ConstructorInit::~ConstructorInit() {
     93        delete ctor;
     94        delete dtor;
     95        delete init;
     96}
     97
     98void ConstructorInit::print( std::ostream &os, int indent ) {
     99        os << std::endl << std::string(indent, ' ') << "Constructor initializer: " << std::endl;
     100        if ( ctor ) {
     101                os << std::string(indent+2, ' ');
     102                os << "initially constructed with ";
     103                ctor->print( os, indent+4 );
     104        } // if
     105
     106        if ( dtor ) {
     107                os << std::string(indent+2, ' ');
     108                os << "destructed with ";
     109                dtor->print( os, indent+4 );
     110        }
     111
     112        if ( init ) {
     113                os << std::string(indent+2, ' ');
     114                os << "with fallback C-style initializer: ";
     115                init->print( os, indent+4 );
     116        }
     117}
     118
     119std::ostream & operator<<( std::ostream & out, Initializer * init ) {
     120        init->print( out );
     121        return out;
     122}
     123
    81124// Local Variables: //
    82125// tab-width: 4 //
  • src/SynTree/Initializer.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Initializer.h -- 
     7// Initializer.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 09:03:48 2015
    13 // Update Count     : 1
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Apr 12 13:49:13 2016
     13// Update Count     : 19
    1414//
    1515
     
    2020#include "Visitor.h"
    2121#include "Mutator.h"
     22#include "Type.h"
    2223
    2324#include <cassert>
     
    2728  public:
    2829        //      Initializer( std::string _name = std::string(""), int _pos = 0 );
    29         Initializer( );
     30        Initializer( bool maybeConstructed );
     31        Initializer( const Initializer & other );
    3032        virtual ~Initializer();
    3133
     
    4345        }
    4446
     47        bool get_maybeConstructed() { return maybeConstructed; }
     48
    4549        virtual Initializer *clone() const = 0;
    4650        virtual void accept( Visitor &v ) = 0;
     
    5054        //      std::string name;
    5155        //      int pos;
     56        bool maybeConstructed;
    5257};
    5358
     
    5560class SingleInit : public Initializer {
    5661  public:
    57         SingleInit( Expression *value, std::list< Expression *> &designators = *(new std::list<Expression *>()) );
     62        SingleInit( Expression *value, const std::list< Expression *> &designators = std::list< Expression * >(), bool maybeConstructed = false );
    5863        SingleInit( const SingleInit &other );
    5964        virtual ~SingleInit();
    60        
     65
    6166        Expression *get_value() { return value; }
    6267        void set_value( Expression *newValue ) { value = newValue; }
     
    6570        std::list<Expression *> &get_designators() { return designators; }
    6671
    67         virtual SingleInit *clone() const;
     72        virtual SingleInit *clone() const { return new SingleInit( *this); }
    6873        virtual void accept( Visitor &v ) { v.visit( this ); }
    6974        virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     
    7984class ListInit : public Initializer {
    8085  public:
    81         ListInit( std::list<Initializer*> &,
    82                           std::list<Expression *> &designators = *(new std::list<Expression *>()) );
     86        ListInit( const std::list<Initializer*> &initializers,
     87                          const std::list<Expression *> &designators = std::list< Expression * >(), bool maybeConstructed = false );
    8388        virtual ~ListInit();
    8489
     
    9196        std::list<Initializer*>::iterator end_initializers() { return initializers.end(); }
    9297
    93         virtual ListInit *clone() const;
     98        virtual ListInit *clone() const { return new ListInit( *this ); }
    9499        virtual void accept( Visitor &v ) { v.visit( this ); }
    95100        virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     
    100105};
    101106
     107// ConstructorInit represents an initializer that is either a constructor expression or
     108// a C-style initializer.
     109class ConstructorInit : public Initializer {
     110  public:
     111        ConstructorInit( Statement * ctor, Statement * dtor, Initializer * init );
     112        ConstructorInit( const ConstructorInit &other );
     113        virtual ~ConstructorInit();
     114
     115        void set_ctor( Statement * newValue ) { ctor = newValue; }
     116        Statement * get_ctor() const { return ctor; }
     117        void set_dtor( Statement * newValue ) { dtor = newValue; }
     118        Statement * get_dtor() const { return dtor; }
     119        void set_init( Initializer * newValue ) { init = newValue; }
     120        Initializer * get_init() const { return init; }
     121
     122        ConstructorInit *clone() const { return new ConstructorInit( *this ); }
     123        virtual void accept( Visitor &v ) { v.visit( this ); }
     124        virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     125        virtual void print( std::ostream &os, int indent = 0 );
     126
     127  private:
     128        Statement * ctor;
     129        Statement * dtor;
     130        // C-style initializer made up of SingleInit and ListInit nodes to use as a fallback
     131        // if an appropriate constructor definition is not found by the resolver
     132        Initializer * init;
     133};
     134
     135std::ostream & operator<<( std::ostream & out, Initializer * init );
     136
    102137#endif // INITIALIZER_H
    103138
  • src/SynTree/Mutator.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Mutator.cc -- 
     7// Mutator.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Apr  1 18:05:16 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Apr 27 17:07:29 2016
    1313// Update Count     : 16
    1414//
     
    182182}
    183183
     184Statement *Mutator::mutate( ImplicitCtorDtorStmt *impCtorDtorStmt ) {
     185        impCtorDtorStmt->set_callStmt( maybeMutate( impCtorDtorStmt->get_callStmt(), *this ) );
     186        return impCtorDtorStmt;
     187}
     188
    184189Expression *Mutator::mutate( ApplicationExpr *applicationExpr ) {
    185190        mutateAll( applicationExpr->get_results(), *this );
     
    335340        asmExpr->set_operand( maybeMutate( asmExpr->get_operand(), *this ) );
    336341        return asmExpr;
     342}
     343
     344Expression* Mutator::mutate( ImplicitCopyCtorExpr *impCpCtorExpr ) {
     345        impCpCtorExpr->set_callExpr( maybeMutate( impCpCtorExpr->get_callExpr(), *this ) );
     346        mutateAll( impCpCtorExpr->get_tempDecls(), *this );
     347        mutateAll( impCpCtorExpr->get_returnDecls(), *this );
     348        return impCpCtorExpr;
    337349}
    338350
     
    450462}
    451463
     464Initializer *Mutator::mutate( ConstructorInit *ctorInit ) {
     465        ctorInit->set_ctor( maybeMutate( ctorInit->get_ctor(), *this ) );
     466        ctorInit->set_init( maybeMutate( ctorInit->get_init(), *this ) );
     467        return ctorInit;
     468}
     469
    452470Subrange *Mutator::mutate( Subrange *subrange ) {
    453471        return subrange;
  • src/SynTree/Mutator.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Mutator.h -- 
     7// Mutator.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Apr  1 17:26:56 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Apr 14 15:32:00 2016
    1313// Update Count     : 10
    1414//
     
    5252        virtual NullStmt* mutate( NullStmt *nullStmt );
    5353        virtual Statement* mutate( DeclStmt *declStmt );
     54        virtual Statement* mutate( ImplicitCtorDtorStmt *impCtorDtorStmt );
    5455
    5556        virtual Expression* mutate( ApplicationExpr *applicationExpr );
     
    6263        virtual Expression* mutate( MemberExpr *memberExpr );
    6364        virtual Expression* mutate( VariableExpr *variableExpr );
    64         virtual Expression* mutate( ConstantExpr *constantExpr ); 
     65        virtual Expression* mutate( ConstantExpr *constantExpr );
    6566        virtual Expression* mutate( SizeofExpr *sizeofExpr );
    6667        virtual Expression* mutate( AlignofExpr *alignofExpr );
     
    7677        virtual Expression* mutate( TypeExpr *typeExpr );
    7778        virtual Expression* mutate( AsmExpr *asmExpr );
     79        virtual Expression* mutate( ImplicitCopyCtorExpr *impCpCtorExpr );
    7880        virtual Expression* mutate( UntypedValofExpr *valofExpr );
    7981        virtual Expression* mutate( CompoundLiteralExpr *compLitExpr );
     
    9698        virtual Initializer* mutate( SingleInit *singleInit );
    9799        virtual Initializer* mutate( ListInit *listInit );
     100        virtual Initializer* mutate( ConstructorInit *ctorInit );
    98101
    99102        virtual Subrange *mutate( Subrange *subrange );
  • src/SynTree/ObjectDecl.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // ObjectDecl.cc -- 
     7// ObjectDecl.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Sep 29 14:13:01 2015
    13 // Update Count     : 18
     12// Last Modified On : Fri May 13 13:23:32 2016
     13// Update Count     : 30
    1414//
    1515
     
    1919#include "Expression.h"
    2020#include "Common/utility.h"
     21#include "Statement.h"
    2122
    2223ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, bool isInline, bool isNoreturn )
     
    5859                os << " with initializer ";
    5960                init->print( os, indent );
     61                os << std::endl << std::string(indent, ' ');
     62                os << "maybeConstructed? " << init->get_maybeConstructed();
    6063        } // if
    6164
    6265        if ( bitfieldWidth ) {
     66                os << std::string(indent, ' ');
    6367                os << " with bitfield width ";
    6468                bitfieldWidth->print( os );
     
    6973#if 0
    7074        if ( get_mangleName() != "") {
    71                 os << get_mangleName() << ": "; 
    72         } else 
     75                os << get_mangleName() << ": ";
     76        } else
    7377#endif
    7478        if ( get_name() != "" ) {
  • src/SynTree/Statement.cc

    r1b5c81ed rf80e0218  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Dec 09 14:09:34 2015
     12// Last Modified On : Thu May 12 13:33:18 2016
    1313// Update Count     : 54
    1414//
     
    4343
    4444void ExprStmt::print( std::ostream &os, int indent ) const {
    45         os << string( indent, ' ' ) << "Expression Statement:" << endl;
     45        os << "Expression Statement:" << endl << std::string( indent + 2, ' ' );
    4646        expr->print( os, indent + 2 );
    4747}
     
    8787        Statement( labels ), originalTarget( _target ), target( _target ), computedTarget( NULL ), type( _type ) {
    8888        //actually this is a syntactic error signaled by the parser
    89         if ( type == BranchStmt::Goto && target.size() == 0 )
     89        if ( type == BranchStmt::Goto && target.empty() )
    9090                throw SemanticError("goto without target");
    9191}
     
    110110
    111111void ReturnStmt::print( std::ostream &os, int indent ) const {
    112         os << std::string( indent, ' ' ) << string ( isThrow? "Throw":"Return" ) << " Statement, returning: ";
    113         if ( expr != 0 ) expr->print( os );
     112        os << string ( isThrow? "Throw":"Return" ) << " Statement, returning: ";
     113        if ( expr != 0 ) {
     114                os << endl << string( indent+2, ' ' );
     115                expr->print( os, indent + 2 );
     116        }
    114117        os << endl;
    115118}
     
    124127
    125128void IfStmt::print( std::ostream &os, int indent ) const {
    126         os << string( indent, ' ' ) << "If on condition: " << endl ;
     129        os << "If on condition: " << endl ;
     130        os << string( indent+4, ' ' );
    127131        condition->print( os, indent + 4 );
    128132
    129         os << string( indent, ' ' ) << ".... and branches: " << endl;
    130 
     133        os << string( indent+2, ' ' ) << "... then: " << endl;
     134
     135        os << string( indent+4, ' ' );
    131136        thenPart->print( os, indent + 4 );
    132137
    133138        if ( elsePart != 0 ) {
     139                os << string( indent+2, ' ' ) << "... else: " << endl;
     140                os << string( indent+4, ' ' );
    134141                elsePart->print( os, indent + 4 );
    135142        } // if
     
    153160
    154161void SwitchStmt::print( std::ostream &os, int indent ) const {
    155         os << string( indent, ' ' ) << "Switch on condition: ";
     162        os << "Switch on condition: ";
    156163        condition->print( os );
    157164        os << endl;
     
    218225
    219226void ChooseStmt::print( std::ostream &os, int indent ) const {
    220         os << string( indent, ' ' ) << "Choose on condition: ";
     227        os << "Choose on condition: ";
    221228        condition->print( os );
    222229        os << endl;
     
    247254
    248255void WhileStmt::print( std::ostream &os, int indent ) const {
    249         os << string( indent, ' ' ) << "While on condition: " << endl ;
     256        os << "While on condition: " << endl ;
    250257        condition->print( os, indent + 4 );
    251258
     
    273280
    274281void ForStmt::print( std::ostream &os, int indent ) const {
    275         os << string( indent, ' ' ) << "Labels: {";
     282        os << "Labels: {";
    276283        for ( std::list<Label>::const_iterator it = get_labels().begin(); it != get_labels().end(); ++it) {
    277284                os << *it << ",";
     
    283290        os << string( indent + 2, ' ' ) << "initialization: \n";
    284291        for ( std::list<Statement *>::const_iterator it = initialization.begin(); it != initialization.end(); ++it ) {
     292                os << string( indent + 4, ' ' );
    285293                (*it)->print( os, indent + 4 );
    286294        }
    287295
    288296        os << "\n" << string( indent + 2, ' ' ) << "condition: \n";
    289         if ( condition != 0 )
     297        if ( condition != 0 ) {
     298                os << string( indent + 4, ' ' );
    290299                condition->print( os, indent + 4 );
     300        }
    291301
    292302        os << "\n" << string( indent + 2, ' ' ) << "increment: \n";
    293         if ( increment != 0 )
     303        if ( increment != 0 ) {
     304                os << string( indent + 4, ' ' );
    294305                increment->print( os, indent + 4 );
     306        }
    295307
    296308        os << "\n" << string( indent + 2, ' ' ) << "statement block: \n";
    297         if ( body != 0 )
     309        if ( body != 0 ) {
     310                os << string( indent + 4, ' ' );
    298311                body->print( os, indent + 4 );
     312        }
    299313
    300314        os << endl;
     
    314328
    315329void TryStmt::print( std::ostream &os, int indent ) const {
    316         os << string( indent, ' ' ) << "Try Statement" << endl;
     330        os << "Try Statement" << endl;
    317331        os << string( indent + 2, ' ' ) << "with block: " << endl;
    318332        block->print( os, indent + 4 );
     
    344358
    345359void CatchStmt::print( std::ostream &os, int indent ) const {
    346         os << string( indent, ' ' ) << "Catch Statement" << endl;
     360        os << "Catch Statement" << endl;
    347361
    348362        os << string( indent, ' ' ) << "... catching" << endl;
     
    369383
    370384void FinallyStmt::print( std::ostream &os, int indent ) const {
    371         os << string( indent, ' ' ) << "Finally Statement" << endl;
     385        os << "Finally Statement" << endl;
    372386        os << string( indent + 2, ' ' ) << "with block: " << endl;
    373387        block->print( os, indent + 4 );
     
    378392
    379393void NullStmt::print( std::ostream &os, int indent ) const {
    380         os << string( indent, ' ' ) << "Null Statement" << endl ;
     394        os << "Null Statement" << endl ;
     395}
     396
     397ImplicitCtorDtorStmt::ImplicitCtorDtorStmt( Statement * callStmt ) : Statement( std::list<Label>() ), callStmt( callStmt ) {
     398        assert( callStmt );
     399}
     400
     401ImplicitCtorDtorStmt::ImplicitCtorDtorStmt( const ImplicitCtorDtorStmt & other ) : Statement( other ), callStmt( maybeClone( other.callStmt ) ) {
     402}
     403
     404ImplicitCtorDtorStmt::~ImplicitCtorDtorStmt() {
     405        delete callStmt;
     406}
     407
     408void ImplicitCtorDtorStmt::print( std::ostream &os, int indent ) const {
     409        os << "Implicit Ctor Dtor Statement" << endl;
     410        os << string( indent + 2, ' ' ) << "with Ctor/Dtor: ";
     411        callStmt->print( os, indent + 2);
     412        os << endl;
    381413}
    382414
  • src/SynTree/Statement.h

    r1b5c81ed rf80e0218  
    2121#include "Mutator.h"
    2222#include "Common/SemanticError.h"
     23#include "Type.h"
     24#include "Label.h"
    2325
    2426class Statement {
     
    394396        virtual ~DeclStmt();
    395397
    396         Declaration *get_decl() { return decl; }
     398        Declaration *get_decl() const { return decl; }
    397399        void set_decl( Declaration *newValue ) { decl = newValue; }
    398400
     
    404406        Declaration *decl;
    405407};
     408
     409
     410/// represents an implicit application of a constructor or destructor. Qualifiers are replaced
     411/// immediately before and after the call so that qualified objects can be constructed
     412/// with the same functions as unqualified objects.
     413class ImplicitCtorDtorStmt : public Statement {
     414  public:
     415        ImplicitCtorDtorStmt( Statement * callStmt );
     416        ImplicitCtorDtorStmt( const ImplicitCtorDtorStmt & other );
     417        virtual ~ImplicitCtorDtorStmt();
     418
     419        Statement *get_callStmt() const { return callStmt; }
     420        void set_callStmt( Statement * newValue ) { callStmt = newValue; }
     421
     422        virtual ImplicitCtorDtorStmt *clone() const { return new ImplicitCtorDtorStmt( *this ); }
     423        virtual void accept( Visitor &v ) { v.visit( this ); }
     424        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     425        virtual void print( std::ostream &os, int indent = 0 ) const;
     426
     427  private:
     428        // Non-owned pointer to the constructor/destructor statement
     429        Statement * callStmt;
     430};
     431
    406432
    407433std::ostream & operator<<( std::ostream & out, Statement * statement );
  • src/SynTree/SynTree.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // SynTree.h -- 
     7// SynTree.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Apr  1 16:47:44 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Apr 14 15:31:36 2016
    1313// Update Count     : 5
    1414//
     
    5656class DeclStmt;
    5757class NullStmt;
     58class ImplicitCtorDtorStmt;
    5859
    5960class Expression;
     
    8182class TypeExpr;
    8283class AsmExpr;
     84class ImplicitCopyCtorExpr;
    8385class UntypedValofExpr;
    8486class CompoundLiteralExpr;
     
    104106class SingleInit;
    105107class ListInit;
     108class ConstructorInit;
    106109
    107110class Subrange;
     
    110113class Constant;
    111114
    112 typedef std::string Label;
     115// typedef std::string Label;
     116class Label;
    113117typedef unsigned int UniqueId;
    114118
    115119class TypeSubstitution;
     120
     121// gcc attribute
     122class Attribute;
    116123
    117124#endif // SYNTREE_H
  • src/SynTree/Type.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Type.cc -- 
     7// Type.cc --
    88//
    99// Author           : Richard C. Bilson
     
    5454}
    5555
     56void Type::Qualifiers::print( std::ostream &os, int indent ) const {
     57        if ( isConst ) {
     58                os << "const ";
     59        } // if
     60        if ( isVolatile ) {
     61                os << "volatile ";
     62        } // if
     63        if ( isRestrict ) {
     64                os << "restrict ";
     65        } // if
     66        if ( isLvalue ) {
     67                os << "lvalue ";
     68        } // if
     69        if ( isAtomic ) {
     70                os << "_Atomic ";
     71        } // if
     72        if ( isAttribute ) {
     73                os << "__attribute(( )) ";
     74        } // if
     75}
     76
    5677void Type::print( std::ostream &os, int indent ) const {
    5778        if ( ! forall.empty() ) {
     
    6081                os << std::string( indent+2, ' ' );
    6182        } // if
    62         if ( tq.isConst ) {
    63                 os << "const ";
    64         } // if
    65         if ( tq.isVolatile ) {
    66                 os << "volatile ";
    67         } // if
    68         if ( tq.isRestrict ) {
    69                 os << "restrict ";
    70         } // if
    71         if ( tq.isLvalue ) {
    72                 os << "lvalue ";
    73         } // if
    74         if ( tq.isAtomic ) {
    75                 os << "_Atomic ";
    76         } // if
    77         if ( tq.isAttribute ) {
    78                 os << "__attribute(( )) ";
    79         } // if
     83        tq.print( os, indent );
    8084}
    8185
  • src/SynTree/Type.h

    r1b5c81ed rf80e0218  
    3636                bool operator<( const Qualifiers &other );
    3737                bool operator>( const Qualifiers &other );
     38                void print( std::ostream &os, int indent = 0 ) const;
    3839
    3940                bool isConst;
  • src/SynTree/TypeSubstitution.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeSubstitution.cc -- 
     7// TypeSubstitution.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:29:15 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Apr 26 11:15:29 2016
    1313// Update Count     : 3
    1414//
     
    7272Type *TypeSubstitution::lookup( std::string formalType ) const {
    7373        TypeEnvType::const_iterator i = typeEnv.find( formalType );
     74       
     75        // break on not in substitution set
     76        if ( i == typeEnv.end() ) return 0;
     77       
     78        // attempt to transitively follow TypeInstType links.
     79        while ( TypeInstType *actualType = dynamic_cast< TypeInstType* >( i->second ) ) {
     80                const std::string& typeName = actualType->get_name();
     81               
     82                // break cycles in the transitive follow
     83                if ( formalType == typeName ) break;
     84               
     85                // Look for the type this maps to, returning previous mapping if none-such
     86                i = typeEnv.find( typeName );
     87                if ( i == typeEnv.end() ) return actualType;
     88        }
     89       
     90        // return type from substitution set
     91        return i->second;
     92       
     93#if 0
    7494        if ( i == typeEnv.end() ) {
    7595                return 0;
     
    7797                return i->second;
    7898        } // if
     99#endif
    79100}
    80101
     
    96117        BoundVarsType::const_iterator bound = boundVars.find( inst->get_name() );
    97118        if ( bound != boundVars.end() ) return inst;
    98        
     119
    99120        TypeEnvType::const_iterator i = typeEnv.find( inst->get_name() );
    100121        if ( i == typeEnv.end() ) {
     
    217238}
    218239
     240std::ostream & operator<<( std::ostream & out, const TypeSubstitution & sub ) {
     241        sub.print( out );
     242        return out;
     243}
     244
     245
    219246// Local Variables: //
    220247// tab-width: 4 //
  • src/SynTree/TypeSubstitution.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeSubstitution.h -- 
     7// TypeSubstitution.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:33:19 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri Apr 29 15:00:20 2016
    1313// Update Count     : 2
    1414//
     
    3333        TypeSubstitution( const TypeSubstitution &other );
    3434        virtual ~TypeSubstitution();
    35        
     35
    3636        TypeSubstitution &operator=( const TypeSubstitution &other );
    37        
     37
    3838        template< typename SynTreeClass > int apply( SynTreeClass *&input );
    3939        template< typename SynTreeClass > int applyFree( SynTreeClass *&input );
    40        
     40
    4141        void add( std::string formalType, Type *actualType );
    4242        void add( const TypeSubstitution &other );
     
    4444        Type *lookup( std::string formalType ) const;
    4545        bool empty() const;
    46        
     46
    4747        template< typename FormalIterator, typename ActualIterator >
    4848        void add( FormalIterator formalBegin, FormalIterator formalEnd, ActualIterator actualBegin );
    49        
     49
     50        /// this function is unused...
    5051        template< typename TypeInstListIterator >
    5152        void extract( TypeInstListIterator begin, TypeInstListIterator end, TypeSubstitution &result );
    52        
     53
    5354        void normalize();
    5455
     
    6364        /// Records type variable bindings from forall-statements and instantiations of generic types
    6465        template< typename TypeClass > Type *handleAggregateType( TypeClass *type );
    65        
     66
    6667        virtual Type* mutate(VoidType *basicType);
    6768        virtual Type* mutate(BasicType *basicType);
     
    7576        virtual Type* mutate(TupleType *tupleType);
    7677        virtual Type* mutate(VarArgsType *varArgsType);
    77        
     78
    7879        // TODO: worry about traversing into a forall-qualified function type or type decl with assertions
    79        
     80
    8081        void initialize( const TypeSubstitution &src, TypeSubstitution &dest );
    8182
     
    136137        return subCount;
    137138}
    138        
     139
    139140template< typename SynTreeClass >
    140141int TypeSubstitution::applyFree( SynTreeClass *&input ) {
     
    149150        return subCount;
    150151}
    151        
     152
    152153template< typename TypeInstListIterator >
    153154void TypeSubstitution::extract( TypeInstListIterator begin, TypeInstListIterator end, TypeSubstitution &result ) {
     155        // xxx - this function doesn't extract varEnv - is this intentional?
    154156        while ( begin != end ) {
    155157                TypeEnvType::iterator cur = typeEnv.find( (*begin++)->get_name() );
     
    173175}
    174176
     177std::ostream & operator<<( std::ostream & out, const TypeSubstitution & sub );
     178
    175179#endif // TYPESUBSTITUTION_H
    176180
  • src/SynTree/Visitor.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Visitor.cc -- 
     7// Visitor.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Apr  1 18:05:13 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Apr 27 17:07:40 2016
    1313// Update Count     : 18
    1414//
     
    3939}
    4040
    41 void Visitor::visit( AggregateDecl *aggregateDecl ) {
     41void Visitor::handleAggregateDecl( AggregateDecl *aggregateDecl ) {
    4242        acceptAll( aggregateDecl->get_parameters(), *this );
    4343        acceptAll( aggregateDecl->get_members(), *this );
     
    4545
    4646void Visitor::visit( StructDecl *aggregateDecl ) {
    47         visit( static_cast< AggregateDecl* >( aggregateDecl ) );
     47        handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
    4848}
    4949
    5050void Visitor::visit( UnionDecl *aggregateDecl ) {
    51         visit( static_cast< AggregateDecl* >( aggregateDecl ) );
     51        handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
    5252}
    5353
    5454void Visitor::visit( EnumDecl *aggregateDecl ) {
    55         visit( static_cast< AggregateDecl* >( aggregateDecl ) );
     55        handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
    5656}
    5757
    5858void Visitor::visit( TraitDecl *aggregateDecl ) {
    59         visit( static_cast< AggregateDecl* >( aggregateDecl ) );
    60 }
    61 
    62 void Visitor::visit( NamedTypeDecl *typeDecl ) {
     59        handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
     60}
     61
     62void Visitor::handleNamedTypeDecl( NamedTypeDecl *typeDecl ) {
    6363        acceptAll( typeDecl->get_parameters(), *this );
    6464        acceptAll( typeDecl->get_assertions(), *this );
     
    6767
    6868void Visitor::visit( TypeDecl *typeDecl ) {
    69         visit( static_cast< NamedTypeDecl* >( typeDecl ) );
     69        handleNamedTypeDecl( static_cast< NamedTypeDecl* >( typeDecl ) );
    7070}
    7171
    7272void Visitor::visit( TypedefDecl *typeDecl ) {
    73         visit( static_cast< NamedTypeDecl* >( typeDecl ) );
     73        handleNamedTypeDecl( static_cast< NamedTypeDecl* >( typeDecl ) );
    7474}
    7575
     
    150150void Visitor::visit( DeclStmt *declStmt ) {
    151151        maybeAccept( declStmt->get_decl(), *this );
     152}
     153
     154void Visitor::visit( ImplicitCtorDtorStmt *impCtorDtorStmt ) {
     155        maybeAccept( impCtorDtorStmt->get_callStmt(), *this );
    152156}
    153157
     
    284288}
    285289
     290void Visitor::visit( ImplicitCopyCtorExpr *impCpCtorExpr ) {
     291        maybeAccept( impCpCtorExpr->get_callExpr(), *this );
     292        acceptAll( impCpCtorExpr->get_tempDecls(), *this );
     293        acceptAll( impCpCtorExpr->get_returnDecls(), *this );
     294}
     295
    286296void Visitor::visit( UntypedValofExpr *valofExpr ) {
    287297        acceptAll( valofExpr->get_results(), *this );
     
    320330}
    321331
    322 void Visitor::visit( ReferenceToType *aggregateUseType ) {
     332void Visitor::handleReferenceToType( ReferenceToType *aggregateUseType ) {
    323333        acceptAll( aggregateUseType->get_forall(), *this );
    324334        acceptAll( aggregateUseType->get_parameters(), *this );
     
    326336
    327337void Visitor::visit( StructInstType *aggregateUseType ) {
    328         visit( static_cast< ReferenceToType * >( aggregateUseType ) );
     338        handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
    329339}
    330340
    331341void Visitor::visit( UnionInstType *aggregateUseType ) {
    332         visit( static_cast< ReferenceToType * >( aggregateUseType ) );
     342        handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
    333343}
    334344
    335345void Visitor::visit( EnumInstType *aggregateUseType ) {
    336         visit( static_cast< ReferenceToType * >( aggregateUseType ) );
     346        handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
    337347}
    338348
    339349void Visitor::visit( TraitInstType *aggregateUseType ) {
    340         visit( static_cast< ReferenceToType * >( aggregateUseType ) );
     350        handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
    341351        acceptAll( aggregateUseType->get_members(), *this );
    342352}
    343353
    344354void Visitor::visit( TypeInstType *aggregateUseType ) {
    345         visit( static_cast< ReferenceToType * >( aggregateUseType ) );
     355        handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
    346356}
    347357
     
    379389}
    380390
     391void Visitor::visit( ConstructorInit *ctorInit ) {
     392        maybeAccept( ctorInit->get_ctor(), *this );
     393        maybeAccept( ctorInit->get_init(), *this );
     394}
     395
    381396void Visitor::visit( Subrange *subrange ) {}
    382397
  • src/SynTree/Visitor.h

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Visitor.h -- 
     7// Visitor.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Apr  1 17:26:55 2016
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Apr 14 15:30:58 2016
    1313// Update Count     : 7
    1414//
     
    5252        virtual void visit( NullStmt *nullStmt );
    5353        virtual void visit( DeclStmt *declStmt );
     54        virtual void visit( ImplicitCtorDtorStmt *impCtorDtorStmt );
    5455
    5556        virtual void visit( ApplicationExpr *applicationExpr );
     
    6263        virtual void visit( MemberExpr *memberExpr );
    6364        virtual void visit( VariableExpr *variableExpr );
    64         virtual void visit( ConstantExpr *constantExpr ); 
     65        virtual void visit( ConstantExpr *constantExpr );
    6566        virtual void visit( SizeofExpr *sizeofExpr );
    6667        virtual void visit( AlignofExpr *alignofExpr );
     
    7677        virtual void visit( TypeExpr *typeExpr );
    7778        virtual void visit( AsmExpr *asmExpr );
     79        virtual void visit( ImplicitCopyCtorExpr *impCpCtorExpr );
    7880        virtual void visit( UntypedValofExpr *valofExpr );
    7981        virtual void visit( CompoundLiteralExpr *compLitExpr );
     
    9698        virtual void visit( SingleInit *singleInit );
    9799        virtual void visit( ListInit *listInit );
     100        virtual void visit( ConstructorInit *ctorInit );
    98101
    99102        virtual void visit( Subrange *subrange );
     
    101104        virtual void visit( Constant *constant );
    102105  private:
    103         virtual void visit( AggregateDecl *aggregateDecl );
    104         virtual void visit( NamedTypeDecl *typeDecl );
    105         virtual void visit( ReferenceToType *aggregateUseType );
     106        virtual void handleAggregateDecl( AggregateDecl *aggregateDecl );
     107        virtual void handleNamedTypeDecl( NamedTypeDecl *typeDecl );
     108        virtual void handleReferenceToType( ReferenceToType *aggregateUseType );
    106109};
    107110
  • src/SynTree/module.mk

    r1b5c81ed rf80e0218  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## module.mk -- 
     8## module.mk --
    99##
    1010## Author           : Richard C. Bilson
     
    4646       SynTree/Visitor.cc \
    4747       SynTree/Mutator.cc \
    48        SynTree/TypeSubstitution.cc
     48       SynTree/AddStmtVisitor.cc \
     49       SynTree/TypeSubstitution.cc \
     50       SynTree/Attribute.cc
    4951
  • src/driver/Makefile.in

    r1b5c81ed rf80e0218  
    6262CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    6363        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
     64AM_V_CXX = $(am__v_CXX_@AM_V@)
     65am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
     66am__v_CXX_0 = @echo "  CXX   " $@;
     67AM_V_at = $(am__v_at_@AM_V@)
     68am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     69am__v_at_0 = @
    6470CXXLD = $(CXX)
    6571CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    6672        -o $@
     73AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
     74am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
     75am__v_CXXLD_0 = @echo "  CXXLD " $@;
     76AM_V_GEN = $(am__v_GEN_@AM_V@)
     77am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     78am__v_GEN_0 = @echo "  GEN   " $@;
    6779SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
    6880DIST_SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
     
    7385ALLOCA = @ALLOCA@
    7486AMTAR = @AMTAR@
     87AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    7588AUTOCONF = @AUTOCONF@
    7689AUTOHEADER = @AUTOHEADER@
     
    8093CC = @CC@
    8194CCDEPMODE = @CCDEPMODE@
     95CFA_BACKEND_CC = @CFA_BACKEND_CC@
    8296CFA_BINDIR = @CFA_BINDIR@
    8397CFA_INCDIR = @CFA_INCDIR@
     
    98112EGREP = @EGREP@
    99113EXEEXT = @EXEEXT@
    100 GCC_PATH = @GCC_PATH@
    101114GREP = @GREP@
    102115INSTALL = @INSTALL@
     
    293306cc1$(EXEEXT): $(cc1_OBJECTS) $(cc1_DEPENDENCIES) $(EXTRA_cc1_DEPENDENCIES)
    294307        @rm -f cc1$(EXEEXT)
    295         $(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
     308        $(AM_V_CXXLD)$(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
    296309cfa$(EXEEXT): $(cfa_OBJECTS) $(cfa_DEPENDENCIES) $(EXTRA_cfa_DEPENDENCIES)
    297310        @rm -f cfa$(EXEEXT)
    298         $(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
     311        $(AM_V_CXXLD)$(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
    299312
    300313mostlyclean-compile:
     
    308321
    309322.cc.o:
    310 @am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
    311 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    312 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     323@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     324@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     325@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    313326@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    314 @am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ $<
     327@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
    315328
    316329.cc.obj:
    317 @am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
    318 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    319 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     330@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     331@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     332@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    320333@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    321 @am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     334@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    322335
    323336ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  • src/driver/cc1.cc

    r1b5c81ed rf80e0218  
    1010// Created On       : Fri Aug 26 14:23:51 2005
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jan 25 16:05:15 2016
    13 // Update Count     : 56
     12// Last Modified On : Fri Jun 10 09:27:37 2016
     13// Update Count     : 80
    1414//
    1515
     
    3030
    3131
    32 string compiler_name( GCC_PATH );                                               // path/name of C compiler
     32string compiler_name( CFA_BACKEND_CC );                                 // path/name of C compiler
    3333
    3434string D__GCC_BPREFIX__( "-D__GCC_BPREFIX__=" );
     
    108108        const char *args[argc + 100];                                           // leave space for 100 additional cpp command line values
    109109        int nargs = 1;                                                                          // number of arguments in args list; 0 => command name
    110         const char *uargs[20];                                                          // leave space for 20 additional cfa-cpp command line values
    111         int nuargs = 1;                                                                         // 0 => command name
     110        const char *cargs[20];                                                          // leave space for 20 additional cfa-cpp command line values
     111        int ncargs = 1;                                                                         // 0 => command name
    112112
    113113        signal( SIGINT,  sigTermHandler );
    114114        signal( SIGTERM, sigTermHandler );
     115
     116#ifdef __DEBUG_H__
     117        cerr << "Stage1" << endl;
     118#endif // __DEBUG_H__
    115119
    116120        // process all the arguments
     
    147151                                i += 1;                                                                 // and the argument
    148152                                cpp_flag = true;
    149                         } else if ( arg == "-D__CFA__" ) {
     153                        } else if ( arg == "-D__CFA_PREPROCESS__" ) {
    150154                                CFA_flag = true;
    151                         } else if ( arg == "-D" && string( argv[i + 1] ) == "__CFA__" ) {
     155                        } else if ( arg == "-D" && string( argv[i + 1] ) == "__CFA_PREPROCESS__" ) {
    152156                                i += 1;                                                                 // and the argument
    153157                                CFA_flag = true;
    154158                        } else if ( prefix( arg, D__CFA_FLAGPREFIX__ ) ) {
    155                                 uargs[nuargs] = ( *new string( arg.substr( D__CFA_FLAGPREFIX__.size() ) ) ).c_str();
    156                                 nuargs += 1;
     159                                cargs[ncargs] = ( *new string( arg.substr( D__CFA_FLAGPREFIX__.size() ) ) ).c_str();
     160                                ncargs += 1;
    157161                        } else if ( arg == "-D" && prefix( argv[i + 1], D__CFA_FLAGPREFIX__.substr(2) ) ) {
    158                                 uargs[nuargs] = ( *new string( string( argv[i + 1] ).substr( D__CFA_FLAGPREFIX__.size() - 2 ) ) ).c_str();
    159                                 nuargs += 1;
     162                                cargs[ncargs] = ( *new string( string( argv[i + 1] ).substr( D__CFA_FLAGPREFIX__.size() - 2 ) ) ).c_str();
     163                                ncargs += 1;
    160164                                i += 1;                                                                 // and the argument
    161165                        } else if ( prefix( arg, D__GCC_BPREFIX__ ) ) {
     
    317321
    318322        if ( fork() == 0 ) {                                                            // child runs CFA
    319                 uargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
    320 
    321                 uargs[nuargs] = tmpname;
    322                 nuargs += 1;
     323                cargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
     324
     325                // Source file-name used to generate routine names containing global initializations for TU.
     326                cargs[ncargs] = ( *new string( "-F" ) ).c_str();
     327                ncargs += 1;
     328                cargs[ncargs] = ( *new string( string( cpp_in ) ) ).c_str();
     329                ncargs += 1;
     330
     331                cargs[ncargs] = tmpname;
     332                ncargs += 1;
    323333                if ( o_name != NULL ) {
    324                         uargs[nuargs] = o_name;
    325                         nuargs += 1;
     334                        cargs[ncargs] = o_name;
     335                        ncargs += 1;
    326336                } else if ( ! CFA_flag ) {                                              // run cfa-cpp ?
    327                         uargs[nuargs] = cpp_out;
    328                         nuargs += 1;
     337                        cargs[ncargs] = cpp_out;
     338                        ncargs += 1;
    329339                } // if
    330                 uargs[nuargs] = NULL;                                                   // terminate argument list
    331 
    332 #ifdef __DEBUG_H__
    333                 cerr << "cfa-cpp nuargs: " << o_name << " " << CFA_flag << " " << nuargs << endl;
    334                 for ( i = 0; uargs[i] != NULL; i += 1 ) {
    335                         cerr << uargs[i] << " ";
     340                cargs[ncargs] = NULL;                                                   // terminate argument list
     341
     342#ifdef __DEBUG_H__
     343                cerr << "cfa-cpp ncargs: " << o_name << " " << CFA_flag << " " << ncargs << endl;
     344                for ( i = 0; cargs[i] != NULL; i += 1 ) {
     345                        cerr << cargs[i] << " ";
    336346                } // for
    337347                cerr << endl;
    338348#endif // __DEBUG_H__
    339349
    340                 execvp( uargs[0], (char * const *)uargs );              // should not return
     350                execvp( cargs[0], (char * const *)cargs );              // should not return
    341351                perror( "CFA Translator error: cpp level, execvp" );
    342352                exit( EXIT_FAILURE );
     
    370380        const char *args[argc + 100];                                           // leave space for 100 additional cfa command line values
    371381        int nargs = 1;                                                                          // number of arguments in args list; 0 => command name
     382
     383#ifdef __DEBUG_H__
     384        cerr << "Stage2" << endl;
     385#endif // __DEBUG_H__
    372386
    373387        // process all the arguments
     
    467481
    468482        if ( arg == "-E" ) {
    469 #ifdef __DEBUG_H__
    470                 cerr << "Stage1" << endl;
    471 #endif // __DEBUG_H__
    472483                Stage1( argc, argv );
    473484        } else if ( arg == "-fpreprocessed" ) {
    474 #ifdef __DEBUG_H__
    475                 cerr << "Stage2" << endl;
    476 #endif // __DEBUG_H__
    477485                Stage2( argc, argv );
    478486        } else {
  • src/driver/cfa.cc

    r1b5c81ed rf80e0218  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr  6 14:04:22 2016
    13 // Update Count     : 132
     12// Last Modified On : Fri Jun 10 09:26:19 2016
     13// Update Count     : 138
    1414//
    1515
     
    7575        string langstd;                                                                         // language standard
    7676
    77         string compiler_path( GCC_PATH );                                       // path/name of C compiler
     77        string compiler_path( CFA_BACKEND_CC );                         // path/name of C compiler
    7878        string compiler_name;                                                           // name of C compiler
    7979
     
    263263        args[nargs] = ( *new string( string("-D__CFA_PATCHLEVEL__=") + Patch ) ).c_str();
    264264        nargs += 1;
    265         args[nargs] = "-D__CFORALL__=1";
     265        args[nargs] = "-D__CFA__";
     266        nargs += 1;
     267        args[nargs] = "-D__CFORALL__";
    266268        nargs += 1;
    267269
     
    272274
    273275        if ( CFA_flag ) {
    274                 args[nargs] = "-D__CFA__";
     276                args[nargs] = "-D__CFA_PREPROCESS_";
    275277                nargs += 1;
    276278        } // if
     
    310312                        nargs += 1;
    311313                } // if
     314                args[nargs] = "-fgnu89-inline";
     315                nargs += 1;
    312316                args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
    313317                nargs += 1;
     
    315319                nargs += 1;
    316320        } else {
    317                 cerr << argv[0] << " error, compiler " << compiler_name << " not supported." << endl;
     321                cerr << argv[0] << " error, compiler \"" << compiler_name << "\" unsupported." << endl;
    318322                exit( EXIT_FAILURE );
    319323        } // if
  • src/examples/Makefile.am

    r1b5c81ed rf80e0218  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## Makefile.am -- 
     8## Makefile.am --
    99##
    1010## Author           : Peter A. Buhr
     
    1919CC = @CFA_BINDIR@/cfa
    2020
    21 noinst_PROGRAMS = fstream_test vector_test # build but do not install
     21noinst_PROGRAMS = fstream_test vector_test avl_test # build but do not install
    2222fstream_test_SOURCES = fstream_test.c
    2323vector_test_SOURCES = vector_int.c array.c vector_test.c
     24avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
  • src/examples/Makefile.in

    r1b5c81ed rf80e0218  
    3636PRE_UNINSTALL = :
    3737POST_UNINSTALL = :
    38 noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT)
     38noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
     39        avl_test$(EXEEXT)
    3940subdir = src/examples
    4041DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
     
    4849CONFIG_CLEAN_VPATH_FILES =
    4950PROGRAMS = $(noinst_PROGRAMS)
     51am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \
     52        avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \
     53        avl-private.$(OBJEXT)
     54avl_test_OBJECTS = $(am_avl_test_OBJECTS)
     55avl_test_LDADD = $(LDADD)
    5056am_fstream_test_OBJECTS = fstream_test.$(OBJEXT)
    5157fstream_test_OBJECTS = $(am_fstream_test_OBJECTS)
     
    5965am__depfiles_maybe = depfiles
    6066am__mv = mv -f
     67AM_V_lt = $(am__v_lt_@AM_V@)
     68am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     69am__v_lt_0 = --silent
    6170COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    6271        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     72AM_V_CC = $(am__v_CC_@AM_V@)
     73am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     74am__v_CC_0 = @echo "  CC    " $@;
     75AM_V_at = $(am__v_at_@AM_V@)
     76am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     77am__v_at_0 = @
    6378CCLD = $(CC)
    6479LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    65 SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
    66 DIST_SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
     80AM_V_CCLD = $(am__v_CCLD_@AM_V@)
     81am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     82am__v_CCLD_0 = @echo "  CCLD  " $@;
     83AM_V_GEN = $(am__v_GEN_@AM_V@)
     84am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     85am__v_GEN_0 = @echo "  GEN   " $@;
     86SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
     87        $(vector_test_SOURCES)
     88DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
     89        $(vector_test_SOURCES)
    6790ETAGS = etags
    6891CTAGS = ctags
     
    7194ALLOCA = @ALLOCA@
    7295AMTAR = @AMTAR@
     96AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    7397AUTOCONF = @AUTOCONF@
    7498AUTOHEADER = @AUTOHEADER@
     
    78102CC = @CFA_BINDIR@/cfa
    79103CCDEPMODE = @CCDEPMODE@
     104CFA_BACKEND_CC = @CFA_BACKEND_CC@
    80105CFA_BINDIR = @CFA_BINDIR@
    81106CFA_INCDIR = @CFA_INCDIR@
     
    98123EGREP = @EGREP@
    99124EXEEXT = @EXEEXT@
    100 GCC_PATH = @GCC_PATH@
    101125GREP = @GREP@
    102126INSTALL = @INSTALL@
     
    176200fstream_test_SOURCES = fstream_test.c
    177201vector_test_SOURCES = vector_int.c array.c vector_test.c
     202avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
    178203all: all-am
    179204
     
    213238clean-noinstPROGRAMS:
    214239        -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
     240avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES)
     241        @rm -f avl_test$(EXEEXT)
     242        $(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS)
    215243fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES)
    216244        @rm -f fstream_test$(EXEEXT)
    217         $(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
     245        $(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
    218246vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES)
    219247        @rm -f vector_test$(EXEEXT)
    220         $(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
     248        $(AM_V_CCLD)$(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
    221249
    222250mostlyclean-compile:
     
    227255
    228256@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
     257@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl-private.Po@am__quote@
     258@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl0.Po@am__quote@
     259@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl1.Po@am__quote@
     260@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl2.Po@am__quote@
     261@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl3.Po@am__quote@
     262@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl4.Po@am__quote@
     263@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl_test.Po@am__quote@
    229264@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@
    230265@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@
     
    232267
    233268.c.o:
    234 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
    235 @am__fastdepCC_TRUE@    $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    236 @AMDEP_TRUE@@am__fastdepCC_FALSE@       source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    237 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    238 @am__fastdepCC_FALSE@   $(COMPILE) -c $<
     269@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     270@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     271@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     272@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     273@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
    239274
    240275.c.obj:
    241 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
    242 @am__fastdepCC_TRUE@    $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    243 @AMDEP_TRUE@@am__fastdepCC_FALSE@       source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    244 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    245 @am__fastdepCC_FALSE@   $(COMPILE) -c `$(CYGPATH_W) '$<'`
     276@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     277@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     278@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     279@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     280@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
     281
     282avl_test.o: avltree/avl_test.c
     283@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl_test.o -MD -MP -MF $(DEPDIR)/avl_test.Tpo -c -o avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c
     284@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po
     285@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.o' libtool=no @AMDEPBACKSLASH@
     286@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     287@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c
     288
     289avl_test.obj: avltree/avl_test.c
     290@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl_test.obj -MD -MP -MF $(DEPDIR)/avl_test.Tpo -c -o avl_test.obj `if test -f 'avltree/avl_test.c'; then $(CYGPATH_W) 'avltree/avl_test.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl_test.c'; fi`
     291@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po
     292@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.obj' libtool=no @AMDEPBACKSLASH@
     293@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     294@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl_test.obj `if test -f 'avltree/avl_test.c'; then $(CYGPATH_W) 'avltree/avl_test.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl_test.c'; fi`
     295
     296avl0.o: avltree/avl0.c
     297@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl0.o -MD -MP -MF $(DEPDIR)/avl0.Tpo -c -o avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c
     298@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po
     299@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl0.c' object='avl0.o' libtool=no @AMDEPBACKSLASH@
     300@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     301@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c
     302
     303avl0.obj: avltree/avl0.c
     304@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl0.obj -MD -MP -MF $(DEPDIR)/avl0.Tpo -c -o avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi`
     305@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po
     306@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl0.c' object='avl0.obj' libtool=no @AMDEPBACKSLASH@
     307@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     308@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi`
     309
     310avl1.o: avltree/avl1.c
     311@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl1.o -MD -MP -MF $(DEPDIR)/avl1.Tpo -c -o avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c
     312@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po
     313@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl1.c' object='avl1.o' libtool=no @AMDEPBACKSLASH@
     314@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     315@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c
     316
     317avl1.obj: avltree/avl1.c
     318@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl1.obj -MD -MP -MF $(DEPDIR)/avl1.Tpo -c -o avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi`
     319@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po
     320@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl1.c' object='avl1.obj' libtool=no @AMDEPBACKSLASH@
     321@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     322@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi`
     323
     324avl2.o: avltree/avl2.c
     325@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl2.o -MD -MP -MF $(DEPDIR)/avl2.Tpo -c -o avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c
     326@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po
     327@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl2.c' object='avl2.o' libtool=no @AMDEPBACKSLASH@
     328@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     329@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c
     330
     331avl2.obj: avltree/avl2.c
     332@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl2.obj -MD -MP -MF $(DEPDIR)/avl2.Tpo -c -o avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi`
     333@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po
     334@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl2.c' object='avl2.obj' libtool=no @AMDEPBACKSLASH@
     335@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     336@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi`
     337
     338avl3.o: avltree/avl3.c
     339@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl3.o -MD -MP -MF $(DEPDIR)/avl3.Tpo -c -o avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c
     340@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po
     341@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl3.c' object='avl3.o' libtool=no @AMDEPBACKSLASH@
     342@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     343@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c
     344
     345avl3.obj: avltree/avl3.c
     346@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl3.obj -MD -MP -MF $(DEPDIR)/avl3.Tpo -c -o avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi`
     347@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po
     348@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl3.c' object='avl3.obj' libtool=no @AMDEPBACKSLASH@
     349@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     350@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi`
     351
     352avl4.o: avltree/avl4.c
     353@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl4.o -MD -MP -MF $(DEPDIR)/avl4.Tpo -c -o avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c
     354@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po
     355@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl4.c' object='avl4.o' libtool=no @AMDEPBACKSLASH@
     356@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     357@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c
     358
     359avl4.obj: avltree/avl4.c
     360@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl4.obj -MD -MP -MF $(DEPDIR)/avl4.Tpo -c -o avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi`
     361@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po
     362@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl4.c' object='avl4.obj' libtool=no @AMDEPBACKSLASH@
     363@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     364@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi`
     365
     366avl-private.o: avltree/avl-private.c
     367@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl-private.o -MD -MP -MF $(DEPDIR)/avl-private.Tpo -c -o avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c
     368@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po
     369@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.o' libtool=no @AMDEPBACKSLASH@
     370@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     371@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c
     372
     373avl-private.obj: avltree/avl-private.c
     374@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl-private.obj -MD -MP -MF $(DEPDIR)/avl-private.Tpo -c -o avl-private.obj `if test -f 'avltree/avl-private.c'; then $(CYGPATH_W) 'avltree/avl-private.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl-private.c'; fi`
     375@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po
     376@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.obj' libtool=no @AMDEPBACKSLASH@
     377@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     378@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl-private.obj `if test -f 'avltree/avl-private.c'; then $(CYGPATH_W) 'avltree/avl-private.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl-private.c'; fi`
    246379
    247380ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  • src/examples/abstype.c

    r1b5c81ed rf80e0218  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:10:01 2015
    13 // Update Count     : 4
     12// Last Modified On : Tue Jun 14 14:27:48 2016
     13// Update Count     : 9
    1414//
    1515
    16 type T | { T x( T ); };
     16otype T | { T x( T ); };
    1717
    1818T y( T t ) {
     
    2121}
    2222
    23 forall(type T) lvalue T *?( T* );
    24 int ?++( int *);
    25 int ?=?( int*, int );
    26 forall(dtype DT) DT* ?=?( DT **, DT* );
     23forall( otype T ) lvalue T *?( T * );
     24int ?++( int * );
     25int ?=?( int *, int );
     26forall( dtype DT ) DT * ?=?( DT **, DT * );
    2727
    28 type U = int*;
     28otype U = int *;
    2929
    3030U x( U u ) {
  • src/examples/alloc.c

    r1b5c81ed rf80e0218  
    1111// Created On       : Wed Feb  3 07:56:22 2016
    1212// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Wed Feb 17 11:43:23 2016
    14 // Update Count     : 40
     13// Last Modified On : Fri Mar 11 17:42:08 2016
     14// Update Count     : 59
    1515//
    1616
     17forall( otype T ) T * malloc( char fill );
     18forall( dtype T ) T *?=?( T **, void * );
     19void *malloc( unsigned long int );
     20#if 0
    1721#include <fstream>
    1822#include <stdlib>
     
    2529int * bar( int * p, int c ) { return p; }
    2630int * baz( int * p, int c ) { return p; }
     31#endif
    2732
    2833int main( void ) {
     34#if 0
    2935    size_t size = 10;
    3036    int * p;
    3137    struct S { int x; double y; } * s;
     38#endif
    3239
     40#if 0
    3341    p = malloc( sizeof(*p) );                                                   // C malloc, type unsafe
    3442        printf( "here1\n" );
     
    3745        printf( "here2\n" );
    3846    free( p );
    39     p = malloc( (char)'\0' );                                                                   // CFA malloc, type safe
     47#endif
     48//    int * p;
     49//    p = malloc( (char)'\0' );                                                                 // CFA malloc, type safe
     50    (int *)malloc( (char)'\0' );                                                                        // CFA malloc, type safe
     51    (void *)malloc( (char)'\0' );                                                                       // CFA malloc, type safe
     52#if 0
    4053        printf( "here3\n" );
    4154    p = malloc( p, 1000 );                                                              // CFA remalloc, type safe
     
    6073        printf( "here9\n" );
    6174    free( p );
    62 #if 0
     75
    6376    float * fp = malloc() + 1;
    6477    fprintf( stderr, "%p %p\n", fp, fp - 1 );
  • src/examples/includes.c

    r1b5c81ed rf80e0218  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 23:28:02 2016
    13 // Update Count     : 328
     12// Last Modified On : Wed Apr 13 22:30:02 2016
     13// Update Count     : 370
    1414//
    1515
     
    2424#if 1
    2525#define _GNU_SOURCE
    26 #include <aio.h>
    27 #include <a.out.h>
    28 #include <aliases.h>
    29 #include <alloca.h>
    30 #include <ansidecl.h>
    31 #include <ar.h>
    32 #include <argp.h>
     26//#include <aio.h>
     27//#include <a.out.h>
     28//#include <aliases.h>
     29//#include <alloca.h>
     30//#include <ansidecl.h>
     31//#include <ar.h>
     32//#include <argp.h>
    3333#include <argz.h>
    34 #include <assert.h>
     34//#include <assert.h>
    3535#include <bfd.h>
     36#if 0
    3637#include <bfdlink.h>
    3738#include <byteswap.h>
     
    5657#include <err.h>
    5758#include <errno.h>
    58 #if 0
    5959#include <error.h>
    60 #endif
    6160#include <eti.h>
    6261#include <evdns.h>
    6362#include <event.h>
    6463#include <evhttp.h>
     64#endif
    6565#if 0
    6666#include <evrpc.h>
     
    129129
    130130//#define _GNU_SOURCE
    131 #include <error.h>
     131#include <bfd.h>
     132//#include <error.h>
    132133
    133134#endif // 0
  • src/examples/sum.c

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // sum.c --
     7// sum.c -- test resolvers ability to deal with many variables with the same name and to use the minimum number of casts
     8//    necessary to disambiguate overloaded variable names.
    89//
    910// Author           : Peter A. Buhr
    1011// Created On       : Wed May 27 17:56:53 2015
    1112// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  4 15:06:47 2016
    13 // Update Count     : 196
     13// Last Modified On : Thu May 26 09:25:42 2016
     14// Update Count     : 201
    1415//
    1516
     
    4849        } // for
    4950        sout | "sum from" | low | "to" | High | "is"
    50                  | (int)sum( size, a ) | "" | ", check" | (int)s | endl;
     51                 | (int)sum( size, a ) | ", check" | (int)s | endl;
    5152
    5253        int s = 0, a[size], v = low;
     
    5657        } // for
    5758        sout | "sum from" | low | "to" | High | "is"
    58                  | sum( size, (int *)a ) | "" | ", check" | (int)s | endl;
     59                 | sum( size, (int *)a ) | ", check" | (int)s | endl;
    5960
    6061        float s = 0.0, a[size], v = low / 10.0;
     
    6465        } // for
    6566        sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
    66                  | sum( size, (float *)a ) | "" | ", check" | (float)s | endl;
     67                 | sum( size, (float *)a ) | ", check" | (float)s | endl;
    6768
    6869        double s = 0, a[size], v = low / 10.0;
     
    7273        } // for
    7374        sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
    74                  | sum( size, (double *)a ) | "" | ", check" | (double)s | endl;
     75                 | sum( size, (double *)a ) | ", check" | (double)s | endl;
    7576
    7677        struct S { int i, j; } 0 = { 0, 0 }, 1 = { 1, 1 };
    77         S ?+?( S t1, S t2 ) { S s = { t1.i + t2.i, t1.j + t2.j }; return s; }
     78        S ?+?( S t1, S t2 ) { return (S){ t1.i + t2.i, t1.j + t2.j }; }
    7879        S ?+=?( S *t1, S t2 ) { *t1 = *t1 + t2; return *t1; }
    7980        S ++?( S *t ) { *t += 1; return *t; }
     
    8788        } // for
    8889        sout | "sum from" | low | "to" | High | "is"
    89                  | sum( size, (S *)a ) | "" | ", check" | (S)s | endl;
     90                 | sum( size, (S *)a ) | ", check" | (S)s | endl;
    9091} // main
    9192
  • src/initialization.txt

    r1b5c81ed rf80e0218  
    3434sure that resolved initializers for all declarations are being
    3535generated.
     36
     37
     38------
     39
     40More recent email: (I am quoted; Richard is the responder)
     41> As far as I'm aware, the only way that I could currently get the correct
     42> results from the unification engine is by feeding it an expression that
     43> looks like "?=?( ((struct Y)x.y).a, 10 )", then picking out the pieces that
     44> I need (namely the correct choice for a). Does this seem like a reasonable
     45> approach to solve this problem?
     46
     47No, unfortunately. Initialization isn't being rewritten as assignment,
     48so you shouldn't allow the particular selection of assignment
     49operators that happen to be in scope (and which may include
     50user-defined operators) to guide the type resolution.
     51
     52I don't think there is any way to rewrite an initializer as a single
     53expression and have the resolver just do the right thing. I see the
     54algorithm as:
     55
     56For each alternative interpretation of the designator:
     57  Construct an expression that casts the initializer to the type of
     58    the designator
     59  Construct an AlternativeFinder and use it to find the lowest cost
     60    interpretation of the expression
     61  Add this interpretation to a list of possibilities
     62Go through the list of possibilities and pick the lowest cost
     63
     64As with many things in the resolver, it's conceptually simple but the
     65implementation may be a bit of a pain. It fits in with functions like
     66findSingleExpression, findIntegralExpression in Resolver.cc, although
     67it will be significantly more complicated than any of the existing
     68ones.
     69
     70
     71
  • src/libcfa/Makefile.am

    r1b5c81ed rf80e0218  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## Makefile.am -- 
     8## Makefile.am --
    99##
    1010## Author           : Peter A. Buhr
    1111## Created On       : Sun May 31 08:54:01 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Wed Apr  6 21:10:44 2016
    14 ## Update Count     : 123
     13## Last Modified On : Mon Jun 13 14:27:22 2016
     14## Update Count     : 166
    1515###############################################################################
    1616
     
    5050        @BACKEND_CC@ -c -o $@ $<
    5151
    52 CFLAGS = -g -Wall -Wno-unused-function -B${abs_top_srcdir}/src/driver -XCFA -t  # TEMPORARY: does not build with -O2
    53 CC = ${abs_top_srcdir}/src/driver/cfa 
     52CFLAGS = -quiet -g -Wall -Wno-unused-function -B${abs_top_srcdir}/src/driver -XCFA -t  # TEMPORARY: does not build with -O2
     53CC = ${abs_top_srcdir}/src/driver/cfa
    5454
    55 # extension-less header files are overridden by default make rules => explicitly override rule
     55headers = limits stdlib math iostream fstream iterator rational
     56libobjs = ${headers:=.o}
     57
     58# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
    5659% : %.c
    57         true
     60        @true
    5861
    59 .c.o : ${abs_top_srcdir}/src/driver/cfa-cpp
    60         ${CC} ${CFLAGS} -c -o $@ $<
     62${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp       # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    6163
    62 libs = limits stdlib iostream fstream iterator rational
    63 libcfa_a_SOURCES = libcfa-prelude.c ${libs:=.c}
     64libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
    6465
    65 cheaders = # expat
    66 cfaheaders = # limits
    67 include_HEADERS = ${cheaders:=.h} ${libs} ${cfaheaders}
     66include_HEADERS = ${headers}
    6867
     68CLEANFILES = libcfa-prelude.c
    6969MAINTAINERCLEANFILES += ${includedir}/*
  • src/libcfa/Makefile.in

    r1b5c81ed rf80e0218  
    8181AR = ar
    8282ARFLAGS = cru
     83AM_V_AR = $(am__v_AR_@AM_V@)
     84am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
     85am__v_AR_0 = @echo "  AR    " $@;
     86AM_V_at = $(am__v_at_@AM_V@)
     87am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     88am__v_at_0 = @
    8389libcfa_a_AR = $(AR) $(ARFLAGS)
    8490libcfa_a_LIBADD =
    85 am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) iostream.$(OBJEXT) \
    86         fstream.$(OBJEXT) iterator.$(OBJEXT) rational.$(OBJEXT)
     91am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) math.$(OBJEXT) \
     92        iostream.$(OBJEXT) fstream.$(OBJEXT) iterator.$(OBJEXT) \
     93        rational.$(OBJEXT)
    8794am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1)
    8895libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
     
    93100COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    94101        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     102AM_V_CC = $(am__v_CC_@AM_V@)
     103am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     104am__v_CC_0 = @echo "  CC    " $@;
    95105CCLD = $(CC)
    96106LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
     107AM_V_CCLD = $(am__v_CCLD_@AM_V@)
     108am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     109am__v_CCLD_0 = @echo "  CCLD  " $@;
     110AM_V_GEN = $(am__v_GEN_@AM_V@)
     111am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     112am__v_GEN_0 = @echo "  GEN   " $@;
    97113SOURCES = $(libcfa_a_SOURCES)
    98114DIST_SOURCES = $(libcfa_a_SOURCES)
     
    105121ALLOCA = @ALLOCA@
    106122AMTAR = @AMTAR@
     123AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    107124AUTOCONF = @AUTOCONF@
    108125AUTOHEADER = @AUTOHEADER@
     
    110127AWK = @AWK@
    111128BACKEND_CC = @BACKEND_CC@
    112 CC = ${abs_top_srcdir}/src/driver/cfa 
     129CC = ${abs_top_srcdir}/src/driver/cfa
    113130CCDEPMODE = @CCDEPMODE@
     131CFA_BACKEND_CC = @CFA_BACKEND_CC@
    114132CFA_BINDIR = @CFA_BINDIR@
    115133CFA_INCDIR = @CFA_INCDIR@
    116134CFA_LIBDIR = @CFA_LIBDIR@
    117135CFA_PREFIX = @CFA_PREFIX@
    118 CFLAGS = -g -Wall -Wno-unused-function -B${abs_top_srcdir}/src/driver -XCFA -t  # TEMPORARY: does not build with -O2
     136CFLAGS = -quiet -g -Wall -Wno-unused-function -B${abs_top_srcdir}/src/driver -XCFA -t  # TEMPORARY: does not build with -O2
    119137CPP = @CPP@
    120138CPPFLAGS = @CPPFLAGS@
     
    130148EGREP = @EGREP@
    131149EXEEXT = @EXEEXT@
    132 GCC_PATH = @GCC_PATH@
    133150GREP = @GREP@
    134151INSTALL = @INSTALL@
     
    213230MAINTAINERCLEANFILES = ${addprefix ${libdir}/,${cfalib_DATA}} \
    214231        ${addprefix ${libdir}/,${lib_LIBRARIES}} ${includedir}/*
    215 libs = limits stdlib iostream fstream iterator rational
    216 libcfa_a_SOURCES = libcfa-prelude.c ${libs:=.c}
    217 cheaders = # expat
    218 cfaheaders = # limits
    219 include_HEADERS = ${cheaders:=.h} ${libs} ${cfaheaders}
     232headers = limits stdlib math iostream fstream iterator rational
     233libobjs = ${headers:=.o}
     234libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
     235include_HEADERS = ${headers}
     236CLEANFILES = libcfa-prelude.c
    220237all: all-am
    221238
     
    283300        -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
    284301libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES)
    285         -rm -f libcfa.a
    286         $(libcfa_a_AR) libcfa.a $(libcfa_a_OBJECTS) $(libcfa_a_LIBADD)
    287         $(RANLIB) libcfa.a
     302        $(AM_V_at)-rm -f libcfa.a
     303        $(AM_V_AR)$(libcfa_a_AR) libcfa.a $(libcfa_a_OBJECTS) $(libcfa_a_LIBADD)
     304        $(AM_V_at)$(RANLIB) libcfa.a
    288305
    289306mostlyclean-compile:
     
    298315@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa-prelude.Po@am__quote@
    299316@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/limits.Po@am__quote@
     317@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Po@am__quote@
    300318@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Po@am__quote@
    301319@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdlib.Po@am__quote@
    302320
     321.c.o:
     322@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     323@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     324@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     325@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     326@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
     327
    303328.c.obj:
    304 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
    305 @am__fastdepCC_TRUE@    $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    306 @AMDEP_TRUE@@am__fastdepCC_FALSE@       source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     329@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     330@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     331@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    307332@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    308 @am__fastdepCC_FALSE@   $(COMPILE) -c `$(CYGPATH_W) '$<'`
     333@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
    309334install-cfalibDATA: $(cfalib_DATA)
    310335        @$(NORMAL_INSTALL)
     
    455480
    456481clean-generic:
     482        -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
    457483
    458484distclean-generic:
     
    579605        @BACKEND_CC@ -c -o $@ $<
    580606
    581 # extension-less header files are overridden by default make rules => explicitly override rule
     607# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
    582608% : %.c
    583         true
    584 
    585 .c.o : ${abs_top_srcdir}/src/driver/cfa-cpp
    586         ${CC} ${CFLAGS} -c -o $@ $<
     609        @true
     610
     611${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp       # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    587612
    588613# Tell versions [3.59,3.63) of GNU make to not export all variables.
  • src/libcfa/fstream

    r1b5c81ed rf80e0218  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Apr  5 22:37:12 2016
    13 // Update Count     : 82
     12// Last Modified On : Thu Apr 28 08:08:04 2016
     13// Update Count     : 88
    1414//
    1515
     
    2323        void *file;
    2424        _Bool sepDefault;
    25         _Bool sepOnOff;
     25        int sepOnOff;                                                                           // FIX ME: type should be _Bool
    2626        char separator[separateSize];
    2727}; // ofstream
  • src/libcfa/fstream.c

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // fstream.c -- 
     7// fstream.c --
    88//
    99// Author           : Peter A. Buhr
    1010// Created On       : Wed May 27 17:56:53 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr  6 17:55:27 2016
    13 // Update Count     : 176
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Mon May 02 15:14:52 2016
     13// Update Count     : 187
    1414//
    1515
     
    7575        if ( fclose( (FILE *)(os->file) ) == EOF ) {
    7676                perror( IO_MSG "close output" );
    77         } // if 
     77        } // if
    7878} // close
    7979
     
    9393int prtfmt( ofstream * os, const char fmt[], ... ) {
    9494    va_list args;
    95 
    9695    va_start( args, fmt );
    9796    int len = vfprintf( (FILE *)(os->file), fmt, args );
     
    103102        } // if
    104103    va_end( args );
     104
     105        sepReset( os );                                                                         // reset separator
    105106        return len;
    106107} // prtfmt
     
    139140        if ( fclose( (FILE *)(is->file) ) == EOF ) {
    140141                perror( IO_MSG "close input" );
    141         } // if 
     142        } // if
    142143} // close
    143144
     
    154155        return is;
    155156} // read
    156  
     157
    157158ifstream *ungetc( ifstream * is, char c ) {
    158159        if ( fail( is ) ) {
  • src/libcfa/iostream.c

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // iostream.c -- 
     7// iostream.c --
    88//
    99// Author           : Peter A. Buhr
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr  6 16:13:29 2016
    13 // Update Count     : 278
     12// Last Modified On : Thu May 26 10:08:31 2016
     13// Update Count     : 305
    1414//
    1515
     
    2121#include <float.h>                                                                              // DBL_DIG, LDBL_DIG
    2222#include <complex.h>                                                                    // creal, cimag
    23 #include <ctype.h>                                                                              // isspace, ispunct
    2423}
    2524
     
    3433ostype * ?|?( ostype *os, short int si ) {
    3534        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    36         sepReset( os );
    3735        prtfmt( os, "%hd", si );
    3836        return os;
     
    4240ostype * ?|?( ostype *os, unsigned short int usi ) {
    4341        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    44         sepReset( os );
    4542        prtfmt( os, "%hu", usi );
    4643        return os;
     
    5047ostype * ?|?( ostype *os, int i ) {
    5148        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    52         sepReset( os );
    5349        prtfmt( os, "%d", i );
    5450        return os;
     
    5854ostype * ?|?( ostype *os, unsigned int ui ) {
    5955        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    60         sepReset( os );
    6156        prtfmt( os, "%u", ui );
    6257        return os;
     
    6661ostype * ?|?( ostype *os, long int li ) {
    6762        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    68         sepReset( os );
    6963        prtfmt( os, "%ld", li );
    7064        return os;
     
    7468ostype * ?|?( ostype *os, unsigned long int uli ) {
    7569        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    76         sepReset( os );
    7770        prtfmt( os, "%lu", uli );
    7871        return os;
     
    8275ostype * ?|?( ostype *os, long long int lli ) {
    8376        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    84         sepReset( os );
    8577        prtfmt( os, "%lld", lli );
    8678        return os;
     
    9082ostype * ?|?( ostype *os, unsigned long long int ulli ) {
    9183        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    92         sepReset( os );
    9384        prtfmt( os, "%llu", ulli );
    9485        return os;
     
    9889ostype * ?|?( ostype *os, float f ) {
    9990        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    100         sepReset( os );
    10191        prtfmt( os, "%g", f );
    10292        return os;
     
    10696ostype * ?|?( ostype *os, double d ) {
    10797        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    108         sepReset( os );
    10998        prtfmt( os, "%.*lg", DBL_DIG, d );
    11099        return os;
     
    114103ostype * ?|?( ostype *os, long double ld ) {
    115104        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    116         sepReset( os );
    117105        prtfmt( os, "%.*Lg", LDBL_DIG, ld );
    118106        return os;
     
    155143                // opening delimiters
    156144                ['('] : Open, ['['] : Open, ['{'] : Open,
    157                 ['$'] : Open, [(unsigned char)'£'] : Open, [(unsigned char)'¥'] : Open, [(unsigned char)'¿'] : Open, [(unsigned char)'«'] : Open,
     145                ['$'] : Open, [(unsigned char)'£'] : Open, [(unsigned char)'¥'] : Open,
     146                [(unsigned char)'¡'] : Open, [(unsigned char)'¿'] : Open, [(unsigned char)'«'] : Open,
    158147                // closing delimiters
    159148                [','] : Close, ['.'] : Close, [':'] : Close, [';'] : Close, ['!'] : Close, ['?'] : Close,
     
    162151                // opening-closing delimiters
    163152                ['\''] : OpenClose, ['`'] : OpenClose, ['"'] : OpenClose,
    164                 ['\f'] : OpenClose, ['\n'] : OpenClose, ['\r'] : OpenClose, ['\t'] : OpenClose, ['\v'] : OpenClose, // isspace
     153                [' '] : OpenClose, ['\f'] : OpenClose, ['\n'] : OpenClose, ['\r'] : OpenClose, ['\t'] : OpenClose, ['\v'] : OpenClose, // isspace
    165154        }; // mask
    166155
    167         int len = strlen( cp );
    168         // null string => no separator
    169   if ( len == 0 ) { sepOff( os ); return os; }
     156  if ( cp[0] == '\0' ) { sepOff( os ); return os; }             // null string => no separator
     157
    170158        // first character IS NOT spacing or closing punctuation => add left separator
    171159        unsigned char ch = cp[0];                                                       // must make unsigned
     
    173161                prtfmt( os, "%s", sepGet( os ) );
    174162        } // if
     163
     164        // if string starts line, must reset to determine open state because separator is off
     165        sepReset( os );                                                                         // reset separator
     166
    175167        // last character IS spacing or opening punctuation => turn off separator for next item
    176         unsigned int posn = len - 1;
     168        unsigned int len = strlen( cp ), posn = len - 1;
    177169        ch = cp[posn];                                                                          // must make unsigned
    178         if ( mask[ ch ] == Open || mask[ ch ] == OpenClose ) {
     170        if ( sepPrt( os ) && mask[ ch ] != Open && mask[ ch ] != OpenClose ) {
     171                sepOn( os );
     172        } else {
    179173                sepOff( os );
    180         } else {
    181                 sepOn( os );
    182174        } // if
    183175        return write( os, cp, len );
     
    187179ostype * ?|?( ostype *os, const void *p ) {
    188180        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
    189         sepReset( os );
    190181        prtfmt( os, "%p", p );
    191182        return os;
     
    193184
    194185
    195 forall( dtype ostype | ostream( ostype ) ) 
     186forall( dtype ostype | ostream( ostype ) )
    196187ostype * ?|?( ostype *os, ostype * (* manip)( ostype * ) ) {
    197188        return manip( os );
    198189} // ?|?
    199190
    200 forall( dtype ostype | ostream( ostype ) ) 
     191forall( dtype ostype | ostream( ostype ) )
    201192ostype * endl( ostype * os ) {
    202193        os | '\n';
     
    206197} // endl
    207198
    208 forall( dtype ostype | ostream( ostype ) ) 
     199forall( dtype ostype | ostream( ostype ) )
    209200ostype * sepOn( ostype * os ) {
    210201        sepOn( os );
     
    212203} // sepOn
    213204
    214 forall( dtype ostype | ostream( ostype ) ) 
     205forall( dtype ostype | ostream( ostype ) )
    215206ostype * sepOff( ostype * os ) {
    216207        sepOff( os );
     
    218209} // sepOff
    219210
    220 forall( dtype ostype | ostream( ostype ) ) 
     211forall( dtype ostype | ostream( ostype ) )
    221212ostype * sepEnable( ostype * os ) {
    222213        sepEnable( os );
     
    224215} // sepEnable
    225216
    226 forall( dtype ostype | ostream( ostype ) ) 
     217forall( dtype ostype | ostream( ostype ) )
    227218ostype * sepDisable( ostype * os ) {
    228219        sepDisable( os );
     
    344335} // ?|?
    345336
    346 _Istream_cstrUC cstr( char * s ) { _Istream_cstrUC s = { s }; return s; }
     337_Istream_cstrUC cstr( char * str ) { return (_Istream_cstrUC){ str }; }
    347338forall( dtype istype | istream( istype ) )
    348339istype * ?|?( istype * is, _Istream_cstrUC cstr ) {
     
    351342} // cstr
    352343
    353 _Istream_cstrC cstr( char * s, int size ) { _Istream_cstrC s = { s, size }; return s; }
     344_Istream_cstrC cstr( char * str, int size ) { return (_Istream_cstrC){ str, size }; }
    354345forall( dtype istype | istream( istype ) )
    355346istype * ?|?( istype * is, _Istream_cstrC cstr ) {
  • src/libcfa/prelude.cf

    r1b5c81ed rf80e0218  
    11# 2 "prelude.cf"  // needed for error messages from this file
    2 //                               -*- Mode: C -*- 
    3 // 
     2//                               -*- Mode: C -*-
     3//
    44// Copyright (C) Glen Ditchfield 1994, 1999
    5 // 
     5//
    66// prelude.cf -- Standard Cforall Preample for C99
    7 // 
     7//
    88// Author           : Glen Ditchfield
    99// Created On       : Sat Nov 29 07:23:41 2014
     
    117117forall( ftype FT ) lvalue FT             *?( FT * );
    118118
    119 _Bool                   +?( _Bool ),                    -?( _Bool ),                    ~?( _Bool );         
    120 signed int              +?( signed int ),               -?( signed int ),               ~?( signed int );           
    121 unsigned int            +?( unsigned int ),             -?( unsigned int ),             ~?( unsigned int );         
    122 signed long int         +?( signed long int ),          -?( signed long int ),          ~?( signed long int );       
    123 unsigned long int       +?( unsigned long int ),        -?( unsigned long int ),        ~?( unsigned long int );             
    124 signed long long int    +?( signed long long int ),     -?( signed long long int ),     ~?( signed long long int );   
    125 unsigned long long int  +?( unsigned long long int ),   -?( unsigned long long int ),   ~?( unsigned long long int ); 
     119_Bool                   +?( _Bool ),                    -?( _Bool ),                    ~?( _Bool );
     120signed int              +?( signed int ),               -?( signed int ),               ~?( signed int );
     121unsigned int            +?( unsigned int ),             -?( unsigned int ),             ~?( unsigned int );
     122signed long int         +?( signed long int ),          -?( signed long int ),          ~?( signed long int );
     123unsigned long int       +?( unsigned long int ),        -?( unsigned long int ),        ~?( unsigned long int );
     124signed long long int    +?( signed long long int ),     -?( signed long long int ),     ~?( signed long long int );
     125unsigned long long int  +?( unsigned long long int ),   -?( unsigned long long int ),   ~?( unsigned long long int );
    126126float                   +?( float ),                    -?( float );
    127127double                  +?( double ),                   -?( double );
     
    627627                        ?+=?( long double _Complex *, long double _Complex ), ?+=?( volatile long double _Complex *, long double _Complex ),
    628628                        ?-=?( long double _Complex *, long double _Complex ), ?-=?( volatile long double _Complex *, long double _Complex );
     629
     630
     631
     632
     633
     634// ------------------------------------------------------------
     635//
     636// Section ??? Constructors and Destructors
     637//
     638// ------------------------------------------------------------
     639
     640// default ctor
     641void    ?{}( _Bool * ),                         ?{}( volatile _Bool * );
     642void    ?{}( char * ),  ?{}( volatile char * );
     643void    ?{}( unsigned char * ), ?{}( volatile unsigned char * );
     644void    ?{}( char signed * ),                   ?{}( volatile char signed * );
     645void    ?{}( int short * ),                             ?{}( volatile int short * );
     646void    ?{}( int short unsigned * ),    ?{}( volatile int short unsigned * );
     647void    ?{}( signed int * ),                    ?{}( volatile signed int * );
     648void    ?{}( unsigned int * ),                  ?{}( volatile unsigned int * );
     649void    ?{}( signed long int * ),               ?{}( volatile signed long int * );
     650void    ?{}( unsigned long int * ),             ?{}( volatile unsigned long int * );
     651void    ?{}( signed long long int * ),          ?{}( volatile signed long long int * );
     652void    ?{}( unsigned long long int * ),        ?{}( volatile unsigned long long int * );
     653void    ?{}( float * ),                         ?{}( volatile float * );
     654void    ?{}( double * ),                        ?{}( volatile double * );
     655void    ?{}( long double * ),                   ?{}( volatile long double * );
     656void    ?{}( float _Complex * ),                ?{}( volatile float _Complex * );
     657void    ?{}( double _Complex * ),               ?{}( volatile double _Complex * );
     658void    ?{}( long double _Complex * ),          ?{}( volatile long double _Complex * );
     659
     660// copy ctor
     661void    ?{}( _Bool *, _Bool ),                                  ?{}( volatile _Bool *, _Bool );
     662void    ?{}( char *, char ),    ?{}( volatile char *, char );
     663void    ?{}( unsigned char *, unsigned char ),                  ?{}( volatile unsigned char *, unsigned char );
     664void    ?{}( char signed *, char signed ),                      ?{}( volatile char signed *, char signed );
     665void    ?{}( int short *, int short ),                          ?{}( volatile int short *, int short );
     666void    ?{}( int short unsigned *, int short unsigned ),        ?{}( volatile int short unsigned *, int short unsigned );
     667void    ?{}( signed int *, signed int),                         ?{}( volatile signed int *, signed int );
     668void    ?{}( unsigned int *, unsigned int),                     ?{}( volatile unsigned int *, unsigned int );
     669void    ?{}( signed long int *, signed long int),               ?{}( volatile signed long int *, signed long int );
     670void    ?{}( unsigned long int *, unsigned long int),           ?{}( volatile unsigned long int *, unsigned long int );
     671void    ?{}( signed long long int *, signed long long int),     ?{}( volatile signed long long int *, signed long long int );
     672void    ?{}( unsigned long long int *, unsigned long long int), ?{}( volatile unsigned long long int *, unsigned long long int );
     673void    ?{}( float *, float),                                   ?{}( volatile float *, float );
     674void    ?{}( double *, double),                                 ?{}( volatile double *, double );
     675void    ?{}( long double *, long double),                       ?{}( volatile long double *, long double );
     676void    ?{}( float _Complex *, float _Complex),                 ?{}( volatile float _Complex *, float _Complex );
     677void    ?{}( double _Complex *, double _Complex),               ?{}( volatile double _Complex *, double _Complex );
     678void    ?{}( long double _Complex *, long double _Complex),     ?{}( volatile long double _Complex *, long double _Complex );
     679
     680// dtor
     681void    ^?{}( _Bool * ),                        ^?{}( volatile _Bool * );
     682void    ^?{}( char * ), ^?{}( volatile char * );
     683void    ^?{}( char unsigned * ),                        ^?{}( volatile char unsigned * );
     684void    ^?{}( char signed * ),                  ^?{}( volatile char signed * );
     685void    ^?{}( int short * ),                            ^?{}( volatile int short * );
     686void    ^?{}( int short unsigned * ),   ^?{}( volatile int short unsigned * );
     687void    ^?{}( signed int * ),                   ^?{}( volatile signed int * );
     688void    ^?{}( unsigned int * ),                 ^?{}( volatile unsigned int * );
     689void    ^?{}( signed long int * ),              ^?{}( volatile signed long int * );
     690void    ^?{}( unsigned long int * ),            ^?{}( volatile unsigned long int * );
     691void    ^?{}( signed long long int * ),         ^?{}( volatile signed long long int * );
     692void    ^?{}( unsigned long long int * ),       ^?{}( volatile unsigned long long int * );
     693void    ^?{}( float * ),                        ^?{}( volatile float * );
     694void    ^?{}( double * ),                       ^?{}( volatile double * );
     695void    ^?{}( long double * ),                  ^?{}( volatile long double * );
     696void    ^?{}( float _Complex * ),               ^?{}( volatile float _Complex * );
     697void    ^?{}( double _Complex * ),              ^?{}( volatile double _Complex * );
     698void    ^?{}( long double _Complex * ),         ^?{}( volatile long double _Complex * );
     699
     700// // default ctor
     701// forall( dtype DT ) void       ?{}(                DT ** );
     702// forall( dtype DT ) void       ?{}( const          DT ** );
     703// forall( dtype DT ) void       ?{}(       volatile DT ** );
     704// forall( dtype DT ) void       ?{}( const volatile DT ** );
     705
     706// // copy ctor
     707// forall( dtype DT ) void       ?{}(                DT **, DT* );
     708// forall( dtype DT ) void       ?{}( const          DT **, DT* );
     709// forall( dtype DT ) void       ?{}(       volatile DT **, DT* );
     710// forall( dtype DT ) void       ?{}( const volatile DT **, DT* );
     711
     712// // dtor
     713// forall( dtype DT ) void      ^?{}(                DT ** );
     714// forall( dtype DT ) void      ^?{}( const          DT ** );
     715// forall( dtype DT ) void      ^?{}(       volatile DT ** );
     716// forall( dtype DT ) void      ^?{}( const volatile DT ** );
     717
     718// copied from assignment section
     719// copy constructors
     720forall( ftype FT ) void ?{}( FT **, FT * );
     721forall( ftype FT ) void ?{}( FT * volatile *, FT * );
     722
     723forall( dtype DT ) void ?{}(                 DT *          *,                   DT * );
     724forall( dtype DT ) void ?{}(                 DT * volatile *,                   DT * );
     725forall( dtype DT ) void ?{}( const           DT *          *,                   DT * );
     726forall( dtype DT ) void ?{}( const           DT * volatile *,                   DT * );
     727forall( dtype DT ) void ?{}( const           DT *          *, const             DT * );
     728forall( dtype DT ) void ?{}( const           DT * volatile *, const             DT * );
     729forall( dtype DT ) void ?{}(       volatile  DT *          *,                   DT * );
     730forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   DT * );
     731forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    DT * );
     732forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    DT * );
     733
     734forall( dtype DT ) void ?{}( const volatile  DT *          *,                   DT * );
     735forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   DT * );
     736forall( dtype DT ) void ?{}( const volatile  DT *          *, const             DT * );
     737forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             DT * );
     738forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    DT * );
     739forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    DT * );
     740forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    DT * );
     741forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    DT * );
     742
     743forall( dtype DT ) void ?{}(                 DT *          *,                   void * );
     744forall( dtype DT ) void ?{}(                 DT * volatile *,                   void * );
     745forall( dtype DT ) void ?{}( const           DT *          *,                   void * );
     746forall( dtype DT ) void ?{}( const           DT * volatile *,                   void * );
     747forall( dtype DT ) void ?{}( const           DT *          *, const             void * );
     748forall( dtype DT ) void ?{}( const           DT * volatile *, const             void * );
     749forall( dtype DT ) void ?{}(       volatile  DT *          *,                   void * );
     750forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   void * );
     751forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    void * );
     752forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    void * );
     753
     754forall( dtype DT ) void ?{}( const volatile  DT *          *,                   void * );
     755forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   void * );
     756forall( dtype DT ) void ?{}( const volatile  DT *          *, const             void * );
     757forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             void * );
     758forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    void * );
     759forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    void * );
     760forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    void * );
     761forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    void * );
     762
     763forall( dtype DT ) void ?{}(                 void *          *,                 DT * );
     764forall( dtype DT ) void ?{}(                 void * volatile *,                 DT * );
     765forall( dtype DT ) void ?{}( const           void *          *,                 DT * );
     766forall( dtype DT ) void ?{}( const           void * volatile *,                 DT * );
     767forall( dtype DT ) void ?{}( const           void *          *, const           DT * );
     768forall( dtype DT ) void ?{}( const           void * volatile *, const           DT * );
     769forall( dtype DT ) void ?{}(        volatile void *          *,                 DT * );
     770forall( dtype DT ) void ?{}(        volatile void * volatile *,                 DT * );
     771forall( dtype DT ) void ?{}(        volatile void *          *,       volatile  DT * );
     772forall( dtype DT ) void ?{}(        volatile void * volatile *,       volatile  DT * );
     773forall( dtype DT ) void ?{}( const volatile void *           *,                 DT * );
     774forall( dtype DT ) void ?{}( const volatile void * volatile *,                  DT * );
     775forall( dtype DT ) void ?{}( const volatile void *           *, const           DT * );
     776forall( dtype DT ) void ?{}( const volatile void * volatile *, const            DT * );
     777forall( dtype DT ) void ?{}( const volatile void *           *,       volatile  DT * );
     778forall( dtype DT ) void ?{}( const volatile void * volatile *,        volatile  DT * );
     779forall( dtype DT ) void ?{}( const volatile void *           *, const volatile  DT * );
     780forall( dtype DT ) void ?{}( const volatile void * volatile *, const volatile   DT * );
     781
     782void    ?{}(                void *          *,                void * );
     783void    ?{}(                void * volatile *,                void * );
     784void    ?{}( const          void *          *,                void * );
     785void    ?{}( const          void * volatile *,                void * );
     786void    ?{}( const          void *          *, const          void * );
     787void    ?{}( const          void * volatile *, const          void * );
     788void    ?{}(       volatile void *          *,                void * );
     789void    ?{}(       volatile void * volatile *,                void * );
     790void    ?{}(       volatile void *          *,       volatile void * );
     791void    ?{}(       volatile void * volatile *,       volatile void * );
     792void    ?{}( const volatile void *          *,                void * );
     793void    ?{}( const volatile void * volatile *,                void * );
     794void    ?{}( const volatile void *          *, const          void * );
     795void    ?{}( const volatile void * volatile *, const          void * );
     796void    ?{}( const volatile void *          *,       volatile void * );
     797void    ?{}( const volatile void * volatile *,       volatile void * );
     798void    ?{}( const volatile void *          *, const volatile void * );
     799void    ?{}( const volatile void * volatile *, const volatile void * );
     800
     801//forall( dtype DT ) void ?{}(              DT *          *, forall( dtype DT2 ) const DT2 * );
     802//forall( dtype DT ) void ?{}(              DT * volatile *, forall( dtype DT2 ) const DT2 * );
     803forall( dtype DT ) void ?{}( const          DT *          *, forall( dtype DT2 ) const DT2 * );
     804forall( dtype DT ) void ?{}( const          DT * volatile *, forall( dtype DT2 ) const DT2 * );
     805//forall( dtype DT ) void ?{}( volatile     DT *          *, forall( dtype DT2 ) const DT2 * );
     806//forall( dtype DT ) void ?{}( volatile     DT * volatile *, forall( dtype DT2 ) const DT2 * );
     807forall( dtype DT ) void ?{}( const volatile DT *          *, forall( dtype DT2 ) const DT2 * );
     808forall( dtype DT ) void ?{}( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
     809
     810forall( ftype FT ) void ?{}( FT *          *, forall( ftype FT2 ) FT2 * );
     811forall( ftype FT ) void ?{}( FT * volatile *, forall( ftype FT2 ) FT2 * );
     812
     813// default ctors
     814forall( ftype FT ) void ?{}( FT *          * );
     815forall( ftype FT ) void ?{}( FT * volatile * );
     816
     817forall( dtype DT ) void ?{}(                 DT *          *);
     818forall( dtype DT ) void ?{}(                 DT * volatile *);
     819forall( dtype DT ) void ?{}( const           DT *          *);
     820forall( dtype DT ) void ?{}( const           DT * volatile *);
     821forall( dtype DT ) void ?{}(       volatile  DT *          *);
     822forall( dtype DT ) void ?{}(       volatile  DT * volatile *);
     823forall( dtype DT ) void ?{}( const volatile  DT *          *);
     824forall( dtype DT ) void ?{}( const volatile  DT * volatile *);
     825
     826void    ?{}(                void *          *);
     827void    ?{}(                void * volatile *);
     828void    ?{}( const          void *          *);
     829void    ?{}( const          void * volatile *);
     830void    ?{}(       volatile void *          *);
     831void    ?{}(       volatile void * volatile *);
     832void    ?{}( const volatile void *          *);
     833void    ?{}( const volatile void * volatile *);
     834
     835// dtors
     836forall( ftype FT ) void ^?{}( FT *         * );
     837forall( ftype FT ) void ^?{}( FT * volatile * );
     838
     839forall( dtype DT ) void ^?{}(                DT *          *);
     840forall( dtype DT ) void ^?{}(                DT * volatile *);
     841forall( dtype DT ) void ^?{}( const          DT *          *);
     842forall( dtype DT ) void ^?{}( const          DT * volatile *);
     843forall( dtype DT ) void ^?{}(      volatile  DT *          *);
     844forall( dtype DT ) void ^?{}(      volatile  DT * volatile *);
     845forall( dtype DT ) void ^?{}( const volatile  DT *         *);
     846forall( dtype DT ) void ^?{}( const volatile  DT * volatile *);
     847
     848void    ^?{}(               void *          *);
     849void    ^?{}(               void * volatile *);
     850void    ^?{}( const         void *          *);
     851void    ^?{}( const         void * volatile *);
     852void    ^?{}(      volatile void *          *);
     853void    ^?{}(      volatile void * volatile *);
     854void    ^?{}( const volatile void *         *);
     855void    ^?{}( const volatile void * volatile *);
  • src/libcfa/rational

    r1b5c81ed rf80e0218  
    1212// Created On       : Wed Apr  6 17:56:25 2016
    1313// Last Modified By : Peter A. Buhr
    14 // Last Modified On : Fri Apr  8 11:38:27 2016
    15 // Update Count     : 15
     14// Last Modified On : Wed May  4 14:11:45 2016
     15// Update Count     : 16
    1616//
    1717
     
    2828
    2929// constructors
    30 Rational rational();
    31 Rational rational( long int n );
    32 Rational rational( long int n, long int d );
     30void ?{}( Rational * r );
     31void ?{}( Rational * r, long int n );
     32void ?{}( Rational * r, long int n, long int d );
    3333
    3434// getter/setter for numerator/denominator
  • src/libcfa/rational.c

    r1b5c81ed rf80e0218  
    1111// Created On       : Wed Apr  6 17:54:28 2016
    1212// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Tue Apr 12 21:26:42 2016
    14 // Update Count     : 21
     13// Last Modified On : Wed May  4 14:16:14 2016
     14// Update Count     : 25
    1515//
    1616
     
    1818#include "fstream"
    1919#include "stdlib"
     20#include "math"                                                                                 // floor
    2021
    2122
     
    5253// constructors
    5354
    54 Rational rational() {
    55     return (Rational){ 0, 1 };
     55void ?{}( Rational * r ) {
     56    r{ 0, 1 };
    5657} // rational
    5758
    58 Rational rational( long int n ) {
    59     return (Rational){ n, 1 };
     59void ?{}( Rational * r, long int n ) {
     60    r{ n, 1 };
    6061} // rational
    6162
    62 Rational rational( long int n, long int d ) {
     63void ?{}( Rational * r, long int n, long int d ) {
    6364    long int t = simplify( &n, &d );                                    // simplify
    64     return (Rational){ n / t, d / t };
     65    r->numerator = n / t;
     66        r->denominator = d / t;
    6567} // rational
    6668
     
    171173Rational narrow( double f, long int md ) {
    172174        if ( md <= 1 ) {                                                                        // maximum fractional digits too small?
    173                 Rational t = rational( f, 1 );                                  // truncate fraction
    174                 return t;
     175                return (Rational){ f, 1};                                               // truncate fraction
    175176        } // if
    176177
     
    198199                k[2] = x * k[1] + k[0]; k[0] = k[1]; k[1] = k[2];
    199200        } // for
    200         Rational t = rational( neg ? -h[1] : h[1], k[1] );
    201         return t;
     201        return (Rational){ neg ? -h[1] : h[1], k[1] };
    202202} // narrow
    203203
  • src/libcfa/stdlib

    r1b5c81ed rf80e0218  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 14:45:53 2016
    13 // Update Count     : 85
     12// Last Modified On : Wed Apr 27 22:03:29 2016
     13// Update Count     : 96
    1414//
    1515
     
    2828#endif // ! EXIT_FAILURE
    2929void exit( int rc );
     30void abort( void );
    3031} // extern "C"
    3132
    3233//---------------------------------------
    3334
    34 extern "C" {
    35 void * malloc( size_t );                                                                // use default C routine for void *
    36 } // extern "C"
     35extern "C" { void * malloc( size_t ); }                                 // use default C routine for void *
    3736forall( otype T ) T * malloc( void );
    3837forall( otype T ) T * malloc( char fill );
    3938forall( otype T ) T * malloc( T * ptr, size_t size );
    4039forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill );
    41 extern "C" {
    42 void * calloc( size_t nmemb, size_t size );                             // use default C routine for void *
    43 } // extern "C"
     40extern "C" { void * calloc( size_t nmemb, size_t size ); } // use default C routine for void *
    4441forall( otype T ) T * calloc( size_t nmemb );
    45 extern "C" {
    46 void * realloc( void * ptr, size_t size );                              // use default C routine for void *
    47 } // extern "C"
     42extern "C" { void * realloc( void * ptr, size_t size ); } // use default C routine for void *
    4843forall( otype T ) T * realloc( T * ptr, size_t size );
    4944forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill );
     
    5348forall( otype T ) int posix_memalign( T ** ptr, size_t alignment );
    5449
    55 forall( otype T ) T * memset( T * ptr, unsigned char fill ); // use default value '\0' for fill
    56 forall( otype T ) T * memset( T * ptr );                                // remove when default value available
     50extern "C" {
     51void * memset( void * ptr, int fill, size_t size );
     52void free( void * ptr );
     53} // extern "C"
    5754
    5855//---------------------------------------
     
    10097
    10198char abs( char );
    102 extern "C" {
    103 int abs( int );                                                                                 // use default C routine for int
    104 } // extern "C"
     99extern "C" { int abs( int ); }                                                  // use default C routine for int
    105100long int abs( long int );
    106101long long int abs( long long int );
     
    108103double abs( double );
    109104long double abs( long double );
    110 float _Complex abs( float _Complex );
    111 double _Complex abs( double _Complex );
    112 long double _Complex abs( long double _Complex );
    113 
    114 //---------------------------------------
    115 
    116 float floor( float );
    117 extern "C" {
    118 double floor( double );                                                                 // use C routine for double
    119 } // extern "C"
    120 long double floor( long double );
    121 
    122 float ceil( float );
    123 extern "C" {
    124 double ceil( double );                                                                  // use C routine for double
    125 } // extern "C"
    126 long double ceil( long double );
     105float abs( float _Complex );
     106double abs( double _Complex );
     107long double abs( long double _Complex );
    127108
    128109//---------------------------------------
  • src/libcfa/stdlib.c

    r1b5c81ed rf80e0218  
    1010// Created On       : Thu Jan 28 17:10:29 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 14:49:58 2016
    13 // Update Count     : 155
     12// Last Modified On : Thu Apr 28 07:54:21 2016
     13// Update Count     : 166
    1414//
    1515
     
    2424#include <malloc.h>                                                                             // malloc_usable_size
    2525#include <math.h>                                                                               // fabsf, fabs, fabsl
    26 #include <complex.h>                                                                    // _Complex_I, cabsf, cabs, cabsl
     26#include <complex.h>                                                                    // _Complex_I
    2727} // extern "C"
    2828
     
    3434        //printf( "malloc3\n" );
    3535        T * ptr = (T *)malloc( sizeof(T) );
    36     return memset( ptr );
     36    return memset( ptr, (int)fill, sizeof(T) );
    3737} // malloc
    3838
     
    7878} // posix_memalign
    7979
    80 forall( otype T ) T * memset( T * ptr, unsigned char fill ) { // use default value '\0' for fill
    81         //printf( "memset1\n" );
    82     return (T *)memset( ptr, (int)fill, malloc_usable_size( ptr ) );
    83 } // memset
    84 forall( otype T ) T * memset( T * ptr ) {                               // remove when default value available
    85         //printf( "memset2\n" );
    86     return (T *)memset( ptr, 0, malloc_usable_size( ptr ) );
    87 } // memset
    88 
    8980//---------------------------------------
    9081
    9182int ato( const char * ptr ) {
    9283        int i;
    93         if ( sscanf( ptr, "%d", &i ) == EOF ) {}                        // check return code
     84        if ( sscanf( ptr, "%d", &i ) == EOF ) {}
    9485        return i;
    9586}
    9687unsigned int ato( const char * ptr ) {
    9788        unsigned int ui;
    98         if ( sscanf( ptr, "%u", &ui ) == EOF ) {}                       // check return code
     89        if ( sscanf( ptr, "%u", &ui ) == EOF ) {}
    9990        return ui;
    10091}
    10192long int ato( const char * ptr ) {
    10293        long int li;
    103         if ( sscanf( ptr, "%ld", &li ) == EOF ) {}                      // check return code
     94        if ( sscanf( ptr, "%ld", &li ) == EOF ) {}
    10495        return li;
    10596}
    10697unsigned long int ato( const char * ptr ) {
    10798        unsigned long int uli;
    108         if ( sscanf( ptr, "%lu", &uli ) == EOF ) {}                     // check return code
     99        if ( sscanf( ptr, "%lu", &uli ) == EOF ) {}
    109100        return uli;
    110101}
    111102long long int ato( const char * ptr ) {
    112103        long long int lli;
    113         if ( sscanf( ptr, "%lld", &lli ) == EOF ) {}            // check return code
     104        if ( sscanf( ptr, "%lld", &lli ) == EOF ) {}
    114105        return lli;
    115106}
    116107unsigned long long int ato( const char * ptr ) {
    117108        unsigned long long int ulli;
    118         if ( sscanf( ptr, "%llu", &ulli ) == EOF ) {}           // check return code
     109        if ( sscanf( ptr, "%llu", &ulli ) == EOF ) {}
    119110        return ulli;
    120111}
     
    122113float ato( const char * ptr ) {
    123114        float f;
    124         if ( sscanf( ptr, "%f", &f ) == EOF ) {}                        // check return code
     115        if ( sscanf( ptr, "%f", &f ) == EOF ) {}
    125116        return f;
    126117}
    127118double ato( const char * ptr ) {
    128119        double d;
    129         if ( sscanf( ptr, "%lf", &d ) == EOF ) {}                       // check return code
     120        if ( sscanf( ptr, "%lf", &d ) == EOF ) {}
    130121        return d;
    131122}
    132123long double ato( const char * ptr ) {
    133124        long double ld;
    134         if ( sscanf( ptr, "%Lf", &ld ) == EOF ) {}                      // check return code
     125        if ( sscanf( ptr, "%Lf", &ld ) == EOF ) {}
    135126        return ld;
    136127}
     
    138129float _Complex ato( const char * ptr ) {
    139130        float re, im;
    140         if ( sscanf( ptr, "%g%gi", &re, &im ) == EOF ) {}       // check return code
     131        if ( sscanf( ptr, "%g%gi", &re, &im ) == EOF ) {}
    141132        return re + im * _Complex_I;
    142133}
    143134double _Complex ato( const char * ptr ) {
    144135        double re, im;
    145         if ( sscanf( ptr, "%lf%lfi", &re, &im ) == EOF ) {} // check return code
     136        if ( sscanf( ptr, "%lf%lfi", &re, &im ) == EOF ) {}
    146137        return re + im * _Complex_I;
    147138}
    148139long double _Complex ato( const char * ptr ) {
    149140        long double re, im;
    150         if ( sscanf( ptr, "%Lf%Lfi", &re, &im ) == EOF ) {}     // check return code
     141        if ( sscanf( ptr, "%Lf%Lfi", &re, &im ) == EOF ) {}
    151142        return re + im * _Complex_I;
    152143}       
     
    222213//---------------------------------------
    223214
    224 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
    225 [ T, T ] div( T t1, T t2 ) { /* return [ t1 / t2, t1 % t2 ]; */ }
     215// forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
     216// [ T, T ] div( T t1, T t2 ) { return [ t1 / t2, t1 % t2 ]; }
    226217
    227218//---------------------------------------
     
    230221long int abs( long int v ) { return labs( v ); }
    231222long long int abs( long long int v ) { return llabs( v ); }
    232 float abs( float v ) { return fabsf( v ); }
    233 double abs( double v ) { return fabs( v ); }
    234 long double abs( long double v ) { return fabsl( v ); }
    235 float _Complex abs( float _Complex v ) { return cabsf( v ); }
    236 double _Complex abs( double _Complex v ) { return cabs( v ); }
    237 long double _Complex abs( long double _Complex v ) { return cabsl( v ); }
    238 
    239 //---------------------------------------
    240 
    241 float floor( float v ) { return floorf( v ); }
    242 long double floor( long double v ) { return floorl( v ); }
    243 
    244 float ceil( float v ) { return ceilf( v ); }
    245 long double ceil( long double v ) { return ceill( v ); }
     223float abs( float x ) { return fabsf( x ); }
     224double abs( double x ) { return fabs( x ); }
     225long double abs( long double x ) { return fabsl( x ); }
     226float abs( float _Complex x ) { return cabsf( x ); }
     227double abs( double _Complex x ) { return cabs( x ); }
     228long double abs( long double _Complex x ) { return cabsl( x ); }
    246229
    247230//---------------------------------------
  • src/main.cc

    r1b5c81ed rf80e0218  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // main.cc -- 
     7// main.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jan 27 22:20:20 2016
    13 // Update Count     : 199
     12// Last Modified On : Sun Jun  5 15:57:30 2016
     13// Update Count     : 205
    1414//
    1515
     
    4040#include "MakeLibCfa.h"
    4141#include "InitTweak/Mutate.h"
    42 #include "InitTweak/RemoveInit.h"
     42#include "InitTweak/GenInit.h"
     43#include "InitTweak/FixInit.h"
     44#include "InitTweak/FixGlobalInit.h"
    4345//#include "Explain/GenProlog.h"
    4446//#include "Try/Visit.h"
     
    5557
    5658static void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false );
    57 static void dump( std::list< Declaration * > & translationUnit );
     59static void dump( std::list< Declaration * > & translationUnit, std::ostream & out = std::cout );
    5860
    5961bool
    6062        astp = false,
    6163        bresolvep = false,
     64        bboxp = false,
     65        ctorinitp = false,
    6266        exprp = false,
    6367        expraltp = false,
     
    7478        codegenp = false;
    7579
    76 enum { Ast, Bresolver, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
     80enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
    7781
    7882static struct option long_opts[] = {
    7983        { "ast", no_argument, 0, Ast },
     84        { "before-box", no_argument, 0, Bbox },
    8085        { "before-resolver", no_argument, 0, Bresolver },
     86        { "ctorinitfix", no_argument, 0, CtorInitFix },
    8187        { "expr", no_argument, 0, Expr },
    8288        { "expralt", no_argument, 0, ExprAlt },
     
    97103        std::ostream *output = &std::cout;
    98104        int long_index;
    99         std::list< Declaration* > translationUnit;
     105        std::list< Declaration * > translationUnit;
     106        const char *filename = NULL;
    100107
    101108        opterr = 0;                                                                                     // prevent getopt from printing error messages
    102        
     109
    103110        int c;
    104         while ( (c = getopt_long( argc, argv, "abefglnpqrstvyzD:", long_opts, &long_index )) != -1 ) {
     111        while ( (c = getopt_long( argc, argv, "abBcefglnpqrstvyzD:F:", long_opts, &long_index )) != -1 ) {
    105112                switch ( c ) {
    106113                  case Ast:
     
    112119                        bresolvep = true;
    113120                        break;
     121                  case 'B':                                                                             // print before resolver steps
     122                        bboxp = true;
     123                        break;
     124                  case CtorInitFix:
     125                  case 'c':
     126                        ctorinitp = true;
     127                        break;
    114128                  case Expr:
    115129                  case 'e':                                                                             // dump AST after expression analysis
     
    163177                  case 'D':                                                                             // ignore -Dxxx
    164178                        break;
     179                  case 'F':                                                                             // source file-name without suffix
     180                        filename = optarg;
     181                        break;
    165182                  case '?':
    166183                        cout << "Unknown option: '" << (char)optopt << "'" << endl;
    167                         exit(1);
     184                        exit( EXIT_FAILURE );
    168185                  default:
    169186                        abort();
     
    176193                        input = fopen( argv[ optind ], "r" );
    177194                        if ( ! input ) {
    178                                 std::cout << "Error: can't open " << argv[optind] << std::endl;
    179                                 exit( 1 );
     195                                std::cout << "Error: can't open " << argv[ optind ] << std::endl;
     196                                exit( EXIT_FAILURE );
    180197                        } // if
     198                        // if running cfa-cpp directly, might forget to pass -F option (and really shouldn't have to)
     199                        if ( filename == NULL ) filename = argv[ optind ];
     200                        // prelude filename comes in differently
     201                        if ( libcfap ) filename = "prelude.cf";
    181202                        optind += 1;
    182203                } else {
    183204                        input = stdin;
     205                        // if running cfa-cpp directly, might forget to pass -F option. Since this takes from stdin, pass
     206                        // a fake name along
     207                        if ( filename == NULL ) filename = "stdin";
    184208                } // if
    185209
     
    187211                        output = new ofstream( argv[ optind ] );
    188212                } // if
    189        
     213
    190214                Parser::get_parser().set_debug( grammarp );
    191215
     
    196220                        if ( builtins == NULL ) {
    197221                                std::cerr << "Error: can't open builtins.cf" << std::endl;
    198                                 exit( 1 );
     222                                exit( EXIT_FAILURE );
    199223                        } // if
    200224
     
    206230                                if ( prelude == NULL ) {
    207231                                        std::cerr << "Error: can't open prelude.cf" << std::endl;
    208                                         exit( 1 );
     232                                        exit( EXIT_FAILURE );
    209233                                } // if
    210                    
     234
    211235                                parse( prelude, LinkageSpec::Intrinsic );
    212236                        } // if
    213237                } // if
    214238
    215                 parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, grammarp );     
    216  
     239                parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, grammarp );
     240
    217241                if ( parsep ) {
    218242                        Parser::get_parser().get_parseTree()->printList( std::cout );
     
    249273                OPTPRINT( "mutate" )
    250274                ControlStruct::mutate( translationUnit );
    251                 OPTPRINT( "fixNames" ) 
     275                OPTPRINT( "fixNames" )
    252276                CodeGen::fixNames( translationUnit );
    253                 OPTPRINT( "tweak" )
    254                 InitTweak::tweak( translationUnit );
     277                OPTPRINT( "fixGlobalInit" );
     278                InitTweak::fixGlobalInit( translationUnit, filename, libcfap || treep );
     279                OPTPRINT( "tweakInit" )
     280                InitTweak::genInit( translationUnit );
    255281
    256282                if ( libcfap ) {
     
    268294                if ( exprp ) {
    269295                        dump( translationUnit );
     296                        return 0;
     297                }
     298
     299                OPTPRINT( "fixInit" )
     300                // fix ObjectDecl - replaces ConstructorInit nodes
     301                InitTweak::fix( translationUnit );
     302                if ( ctorinitp ) {
     303                        dump ( translationUnit );
     304                        return 0;
    270305                }
    271306
     
    276311                OPTPRINT( "convertLvalue" )
    277312                GenPoly::convertLvalue( translationUnit );
     313
     314                if ( bboxp ) {
     315                        dump( translationUnit );
     316                        return 0;
     317                }
    278318                OPTPRINT( "box" )
    279319                GenPoly::box( translationUnit );
    280                
     320
    281321                // print tree right before code generation
    282322                if ( codegenp ) {
     
    292332        } catch ( SemanticError &e ) {
    293333                if ( errorp ) {
    294                         dump( translationUnit );
     334                        std::cerr << "---AST at error:---" << std::endl;
     335                        dump( translationUnit, std::cerr );
     336                        std::cerr << std::endl << "---End of AST, begin error message:---\n" << std::endl;
    295337                }
    296338                e.print( std::cerr );
     
    314356        } // try
    315357
     358        deleteAll( translationUnit );
    316359        return 0;
    317360} // main
     
    331374}
    332375
    333 static void dump( std::list< Declaration * > & translationUnit ) {
     376static void dump( std::list< Declaration * > & translationUnit, std::ostream & out ) {
    334377        std::list< Declaration * > decls;
    335378        if ( noprotop ) {
    336                 filter( translationUnit.begin(), translationUnit.end(), 
     379                filter( translationUnit.begin(), translationUnit.end(),
    337380                                std::back_inserter( decls ), notPrelude );
    338381        } else {
     
    340383        }
    341384
    342         printAll( decls, std::cout );
     385        printAll( decls, out );
    343386        deleteAll( translationUnit );
    344387}
Note: See TracChangeset for help on using the changeset viewer.