Changes in / [f80e0218:1b5c81ed]


Ignore:
Files:
425 added
175 deleted
111 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    rf80e0218 r1b5c81ed  
    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

    rf80e0218 r1b5c81ed  
    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
    7 def 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 
    48 def 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 
    71 def 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 
    85 def 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)
    110 class 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
    128 def 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
    136 def 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 //===========================================================================================================
    155 node ('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 //===========================================================================================================
    236 def 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
    249 def 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
    254 generated because of a git hooks/post-receive script following
    255 a ref change was pushed to the repository containing
    256 the project "UNNAMED PROJECT".
    257 
    258 Check console output at ${env.BUILD_URL} to view the results.
    259 
    260 - Status --------------------------------------------------------------
    261 
    262 PROMOTE 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
    272 def 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
    292 generated because of a git hooks/post-receive script following
    293 a ref change was pushed to the repository containing
    294 the project "UNNAMED PROJECT".
    295 
    296 The branch ${env.BRANCH_NAME} has been updated.
    297    via  ${gitRefOldValue} (commit)
    298   from  ${gitRefNewValue} (commit)
    299 
    300 Check console output at ${env.BUILD_URL} to view the results.
    301 
    302 - Status --------------------------------------------------------------
    303 
    304 BUILD# ${env.BUILD_NUMBER} - ${status}
    305 
    306 - Log -----------------------------------------------------------------
    307 ${gitLog}
    308 -----------------------------------------------------------------------
    309 Summary 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 }
     1node ('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 }
  • Makefile.am

    rf80e0218 r1b5c81ed  
    1111## Created On       : Sun May 31 22:14:18 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Fri Jun 17 14:56:18 2016
    14 ## Update Count     : 13
     13## Last Modified On : Mon Jan 25 22:16:13 2016
     14## Update Count     : 10
    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/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
     22MAINTAINERCLEANFILES = lib/* bin/*
  • Makefile.in

    rf80e0218 r1b5c81ed  
    5151CONFIG_CLEAN_FILES =
    5252CONFIG_CLEAN_VPATH_FILES =
    53 AM_V_GEN = $(am__v_GEN_@AM_V@)
    54 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    55 am__v_GEN_0 = @echo "  GEN   " $@;
    56 AM_V_at = $(am__v_at_@AM_V@)
    57 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    58 am__v_at_0 = @
    5953SOURCES =
    6054DIST_SOURCES =
     
    117111ALLOCA = @ALLOCA@
    118112AMTAR = @AMTAR@
    119 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    120113AUTOCONF = @AUTOCONF@
    121114AUTOHEADER = @AUTOHEADER@
     
    125118CC = @CC@
    126119CCDEPMODE = @CCDEPMODE@
    127 CFA_BACKEND_CC = @CFA_BACKEND_CC@
    128120CFA_BINDIR = @CFA_BINDIR@
    129121CFA_INCDIR = @CFA_INCDIR@
     
    144136EGREP = @EGREP@
    145137EXEEXT = @EXEEXT@
     138GCC_PATH = @GCC_PATH@
    146139GREP = @GREP@
    147140INSTALL = @INSTALL@
     
    222215SUBDIRS = src/driver src src/libcfa     # order important, src before libcfa because cfa-cpp used to build prelude
    223216EXTRA_DIST = Docs                       # non-source files
    224 MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
     217MAINTAINERCLEANFILES = lib/* bin/*
    225218all: config.h
    226219        $(MAKE) $(AM_MAKEFLAGS) all-recursive
  • aclocal.m4

    rf80e0218 r1b5c81ed  
    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).
    913 AC_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')])
    917 case $enable_silent_rules in
    918 yes) AM_DEFAULT_VERBOSITY=0;;
    919 no)  AM_DEFAULT_VERBOSITY=1;;
    920 *)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
    921 esac
    922 dnl
    923 dnl A few `make' implementations (e.g., NonStop OS and NextStep)
    924 dnl do not support nested variable expansions.
    925 dnl See automake bug#9928 and bug#10237.
    926 am_make=${MAKE-make}
    927 AC_CACHE_CHECK([whether $am_make supports nested variables],
    928    [am_cv_make_support_nested_variables],
    929    [if AS_ECHO([['TRUE=$(BAR$(V))
    930 BAR0=false
    931 BAR1=true
    932 V=1
    933 am__doit:
    934         @$(TRUE)
    935 .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
    936   am_cv_make_support_nested_variables=yes
    937 else
    938   am_cv_make_support_nested_variables=no
    939 fi])
    940 if 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)'
    944 else
    945   AM_V=$AM_DEFAULT_VERBOSITY
    946   AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
    947 fi
    948 AC_SUBST([AM_V])dnl
    949 AM_SUBST_NOTMAKE([AM_V])dnl
    950 AC_SUBST([AM_DEFAULT_V])dnl
    951 AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
    952 AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
    953 AM_BACKSLASH='\'
    954 AC_SUBST([AM_BACKSLASH])dnl
    955 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
    956 ])
    957 
    958901# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
    959902#
  • config.h.in

    rf80e0218 r1b5c81ed  
    11/* config.h.in.  Generated from configure.ac by autoheader.  */
    2 
    3 /* Location of include files. */
    4 #undef CFA_BACKEND_CC
    52
    63/* Location of cfa command. */
     
    2320/* Define to 1 if using `alloca.c'. */
    2421#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

    rf80e0218 r1b5c81ed  
    643643CFA_INCDIR
    644644CFA_PREFIX
    645 CFA_BACKEND_CC
    646645BACKEND_CC
     646GCC_PATH
    647647MAINT
    648648MAINTAINER_MODE_FALSE
     
    671671INSTALL_SCRIPT
    672672INSTALL_PROGRAM
    673 AM_BACKSLASH
    674 AM_DEFAULT_VERBOSITY
    675 AM_DEFAULT_V
    676 AM_V
    677673target_alias
    678674host_alias
     
    716712ac_user_opts='
    717713enable_option_checking
    718 enable_silent_rules
    719714enable_maintainer_mode
    720715with_backend_compiler
     
    13511346  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
    13521347  --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')
    13551348  --disable-maintainer-mode  disable make rules and dependencies not useful
    13561349                          (and sometimes confusing) to the casual installer
     
    24152408ac_config_headers="$ac_config_headers config.h"
    24162409
    2417 # Check whether --enable-silent-rules was given.
    2418 if test "${enable_silent_rules+set}" = set; then :
    2419   enableval=$enable_silent_rules;
    2420 fi
    2421 
    2422 case $enable_silent_rules in
    2423 yes) AM_DEFAULT_VERBOSITY=0;;
    2424 no)  AM_DEFAULT_VERBOSITY=1;;
    2425 *)   AM_DEFAULT_VERBOSITY=1;;
    2426 esac
    2427 am_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; }
    2430 if ${am_cv_make_support_nested_variables+:} false; then :
    2431   $as_echo_n "(cached) " >&6
    2432 else
    2433   if $as_echo 'TRUE=$(BAR$(V))
    2434 BAR0=false
    2435 BAR1=true
    2436 V=1
    2437 am__doit:
    2438         @$(TRUE)
    2439 .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
    2440   am_cv_make_support_nested_variables=yes
    2441 else
    2442   am_cv_make_support_nested_variables=no
    2443 fi
    2444 fi
    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; }
    2447 if test $am_cv_make_support_nested_variables = yes; then
    2448     AM_V='$(V)'
    2449   AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
    2450 else
    2451   AM_V=$AM_DEFAULT_VERBOSITY
    2452   AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
    2453 fi
    2454 AM_BACKSLASH='\'
    2455 
    24562410
    24572411if test "x${CXXFLAGS}" = "x"; then
     
    29682922# Check whether --with-backend-compiler was given.
    29692923if test "${with_backend_compiler+set}" = set; then :
    2970   withval=$with_backend_compiler; backendcompiler=$withval
    2971 else
    2972   backendcompiler=""
    2973 fi
    2974 
    2975 if test "x$backendcompiler" != x; then
    2976         BACKEND_CC=${backendcompiler}
    2977 else
     2924  withval=$with_backend_compiler; backcompiler=$withval
     2925else
     2926  backcompiler=""
     2927fi
     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
    29782936        # Extract the first word of "gcc", so it can be a program name with args.
    29792937set dummy gcc; ac_word=$2
    29802938{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
    29812939$as_echo_n "checking for $ac_word... " >&6; }
    2982 if ${ac_cv_path_BACKEND_CC+:} false; then :
     2940if ${ac_cv_path_GCC_PATH+:} false; then :
    29832941  $as_echo_n "(cached) " >&6
    29842942else
    2985   case $BACKEND_CC in
     2943  case $GCC_PATH in
    29862944  [\\/]* | ?:[\\/]*)
    2987   ac_cv_path_BACKEND_CC="$BACKEND_CC" # Let the user override the test with a path.
     2945  ac_cv_path_GCC_PATH="$GCC_PATH" # Let the user override the test with a path.
    29882946  ;;
    29892947  *)
     
    29952953    for ac_exec_ext in '' $ac_executable_extensions; do
    29962954  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    2997     ac_cv_path_BACKEND_CC="$as_dir/$ac_word$ac_exec_ext"
     2955    ac_cv_path_GCC_PATH="$as_dir/$ac_word$ac_exec_ext"
    29982956    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
    29992957    break 2
     
    30032961IFS=$as_save_IFS
    30042962
     2963  test -z "$ac_cv_path_GCC_PATH" && ac_cv_path_GCC_PATH="N/A"
    30052964  ;;
    30062965esac
    30072966fi
    3008 BACKEND_CC=$ac_cv_path_BACKEND_CC
    3009 if test -n "$BACKEND_CC"; then
    3010   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BACKEND_CC" >&5
    3011 $as_echo "$BACKEND_CC" >&6; }
     2967GCC_PATH=$ac_cv_path_GCC_PATH
     2968if test -n "$GCC_PATH"; then
     2969  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCC_PATH" >&5
     2970$as_echo "$GCC_PATH" >&6; }
    30122971else
    30132972  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     
    30162975
    30172976
    3018         if test "x$BACKEND_CC" = "x"; then
     2977        if test "$GCC_PATH" = "N/A"; then
    30192978                as_fn_error $? "some version of gcc is needed. Get it at ftp://ftp.gnu.org" "$LINENO" 5
    30202979                exit 1
    30212980        fi
    3022 fi
    30232981
    30242982cat >>confdefs.h <<_ACEOF
    3025 #define CFA_BACKEND_CC "${BACKEND_CC}"
    3026 _ACEOF
    3027 
     2983#define GCC_PATH "${GCC_PATH}"
     2984_ACEOF
     2985
     2986        BACKEND_CC=${GCC_PATH}
     2987  fi
    30282988
    30292989
     
    57975757
    57985758
    5799 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/libcfa/Makefile"
     5759ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/libcfa/Makefile"
    58005760
    58015761
     
    65436503    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
    65446504    "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;;
    6545     "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
    65466505    "src/libcfa/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcfa/Makefile" ;;
    65476506
  • configure.ac

    rf80e0218 r1b5c81ed  
    77#AC_CONFIG_SRCDIR([src/main.cc])
    88AC_CONFIG_HEADERS([config.h])
    9 AM_SILENT_RULES([no])
    109
    1110if test "x${CXXFLAGS}" = "x"; then
     
    2019# Installation paths
    2120
    22 AC_ARG_WITH(backend-compiler,
    23         [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
    24         backendcompiler=$withval, backendcompiler="")
    25 if test "x$backendcompiler" != x; then
    26         BACKEND_CC=${backendcompiler}
    27 else
    28         AC_PATH_PROG(BACKEND_CC, gcc, [])
    29         if test "x$BACKEND_CC" = "x"; then
     21AC_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
    3030                AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
    3131                exit 1
    3232        fi
    33 fi
    34 AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${BACKEND_CC}", [Location of include files.])
    35 AC_SUBST(CFA_BACKEND_CC)
     33        AC_DEFINE_UNQUOTED(GCC_PATH, "${GCC_PATH}", [Path/name of C compiler.])
     34        BACKEND_CC=${GCC_PATH}
     35  fi
     36AC_SUBST(BACKEND_CC)
    3637
    3738if test "x$prefix" = "xNONE"; then
     
    3940else
    4041        cfa_prefix=${prefix}
    41 fi
     42fi 
    4243AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa install.])
    4344AC_SUBST(CFA_PREFIX, ${cfa_prefix})
     
    4748else
    4849        cfa_incdir=${includedir}
    49 fi
     50fi 
    5051AC_DEFINE_UNQUOTED(CFA_INCDIR, "${cfa_incdir}", [Location of include files.])
    5152AC_SUBST(CFA_INCDIR, ${cfa_incdir})
     
    5556else
    5657        cfa_bindir=${bindir}
    57 fi
     58fi 
    5859AC_DEFINE_UNQUOTED(CFA_BINDIR, "${cfa_bindir}", [Location of cfa command.])
    5960AC_SUBST(CFA_BINDIR, ${cfa_bindir})
     
    6364else
    6465        cfa_libdir=${libdir}
    65 fi
     66fi 
    6667AC_DEFINE_UNQUOTED(CFA_LIBDIR, "${cfa_libdir}", [Location of cc1 and cfa-cpp commands.])
    6768AC_SUBST(CFA_LIBDIR, ${cfa_libdir})
     
    106107        src/Makefile
    107108        src/examples/Makefile
    108         src/tests/Makefile
    109109        src/libcfa/Makefile
    110110        ])
  • doc/LaTeXmacros/common.tex

    rf80e0218 r1b5c81ed  
    1111%% Created On       : Sat Apr  9 10:06:17 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Mon Jun 20 09:35:20 2016
    14 %% Update Count     : 178
     13%% Last Modified On : Sat Apr  9 10:06:39 2016
     14%% Update Count     : 1
    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 
    4019% Names used in the document.
    4120
    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
     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
    4524\def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name)
    4625
     
    4827
    4928\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 
    5529% allow escape sequence in lstinline
    5630%\usepackage{etoolbox}
    5731%\patchcmd{\lsthk@TextStyle}{\let\lst@DefEsc\@empty}{}{}{\errmessage{failed to patch}}
    5832
    59 \usepackage{pslatex}                                                                    % reduce size of san serif font
    60 \usepackage{relsize}                                    % must be after change to small or selects old size
     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
    6146
    6247% reduce size of chapter/section titles
     
    8166    \vskip 50\p@
    8267  }}
    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}}
     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}}
    8570\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.5ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\normalsize\bfseries}}
    8671\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{-2.0ex \@plus -1ex \@minus -.2ex}{-1em}{\normalfont\normalsize\bfseries}}
     
    9075\newcommand{\definition}[1]{\textbf{\hyperpage{#1}}}
    9176\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}}
    9281
    9382% Define some commands that produce formatted index entries suitable for cross-references.
     
    120109\newcommand{\@sIndex}[2][\@empty]{#2\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}
    121110
    122 \newcommand{\Indexc}[1]{\lstinline$#1$\index{#1@\lstinline$#1$}}
    123 \newcommand{\indexc}[1]{\index{#1@\lstinline$#1$}}
    124 
    125111\newcommand{\newtermFontInline}{\emph}
    126112\newcommand{\newterm}{\@ifstar\@snewterm\@newterm}
     
    130116
    131117\newenvironment{quote2}{%
    132         \list{}{\lstset{resetmargins=true,aboveskip=0pt,belowskip=0pt}\topsep=4pt\parsep=0pt\leftmargin=\parindent\rightmargin\leftmargin}%
     118        \list{}{\lstset{resetmargins=true}\leftmargin=\parindent\rightmargin\leftmargin}%
    133119        \item\relax
    134120}{%
     
    136122}% quote2
    137123\newenvironment{rationale}{%
    138   \begin{quote2}\noindent$\Box$\enspace
     124  \begin{quotation}\noindent$\Box$\enspace
    139125}{%
    140   \hfill\enspace$\Box$\end{quote2}
     126  \hfill\enspace$\Box$\end{quotation}
    141127}%
    142128
    143129% blocks and titles
    144130\newcommand{\define}[1]{\emph{#1\/}\index{#1}}
     131\newcommand{\rewrite}{\(\Rightarrow\)}
    145132\newcommand{\rewriterules}{\paragraph{Rewrite Rules}~\par\noindent}
    146133\newcommand{\examples}{\paragraph{Examples}~\par\noindent}
     
    150137
    151138% BNF macros
    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}}
     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}}
    166145\newcommand{\opt}{$_{opt}$\ }
    167146
     
    200179                fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,otype,restrict,_Static_assert,
    201180                _Thread_local,throw,throwResume,trait,try,typeof,__typeof,__typeof__,},
     181        moredelim=**[is][\color{red}]{`}{`}, % red highlighting of program text
    202182}%
    203183
     
    205185language=CFA,
    206186columns=flexible,
    207 basicstyle=\linespread{0.9}\sf,
    208 stringstyle=\tt,
     187basicstyle=\sf\relsize{-1},
    209188tabsize=4,
    210 xleftmargin=\parindentlnth,
    211 extendedchars=true,
    212 escapechar=§,
     189xleftmargin=\parindent,
     190escapechar=@,
    213191mathescape=true,
    214192keepspaces=true,
    215193showstringspaces=false,
    216194showlines=true,
    217 aboveskip=4pt,
    218 belowskip=3pt,
    219 moredelim=**[is][\color{red}]{®}{®}, % red highlighting
    220 moredelim=**[is][\color{blue}]{ß}{ß}, % blue highlighting
    221 moredelim=**[is][\color{OliveGreen}]{¢}{¢}, % green highlighting
    222 moredelim=[is][\lstset{keywords={}}]{¶}{¶}, % temporarily turn off keywords
    223 % replace/adjust listing characters that look bad in sanserif
    224 literate={-}{\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,
     195aboveskip=6pt,
     196belowskip=4pt,
     197literate={\\`}{\raisebox{0.3ex}{\ttfamily\upshape \hspace*{-2pt}`}}1, % escape \`, otherwise used for red highlighting
    227198}%
    228199
    229 \lstMakeShortInline©    % single-character for \lstinline
     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
    230215
    231216% Local Variables: %
  • doc/bibliography/cfa.bib

    • Property mode changed from 100644 to 120000
    rf80e0218 r1b5c81ed  
    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 }
     1/usr/local/bibliographies/pl.bib
  • doc/refrat/Makefile

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

    rf80e0218 r1b5c81ed  
    1111%% Created On       : Wed Apr  6 14:52:25 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Sat Jun 18 19:21:30 2016
    14 %% Update Count     : 74
     13%% Last Modified On : Sat Apr  9 10:19:12 2016
     14%% Update Count     : 8
    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)
    2618
    2719\documentclass[openright,twoside]{report}
     
    2921
    3022% Latex packages used in the document.
    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
     23\usepackage{fullpage,times}
    3724\usepackage{xspace}
    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
     25\usepackage{varioref}
     26\usepackage{listings}
     27\usepackage{comment}
     28\usepackage{latexsym}                                   % \Box
    4229\usepackage{mathptmx}                                   % better math font with "times"
    43 \usepackage[usenames]{color}
    4430\usepackage[pagewise]{lineno}
    4531\renewcommand{\linenumberfont}{\scriptsize\sffamily}
    46 \input{common}                                          % bespoke macros used in the document
    4732\usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}
    4833\usepackage{breakurl}
     
    5136%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5237
    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}}}
     38% Bespoke macros used in the document.
     39\input{common}
    6240
    6341%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    8159}% author
    8260\date{
    83 DRAFT \\
    84 \today
     61DRAFT\\\today
    8562}% date
    8663
     
    146123\subsection{Scopes of identifiers}\index{scopes}
    147124
    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.
    149 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 ©type©\use{type} or ©typedef©\use{typedef} declaration and the other is not.
    150 The outer declaration becomes \Index{visible} when the scope of the inner declaration terminates.
    151 \begin{rationale}
    152 Hence, a \CFA program can declare an ©int v© and a ©float v© in the same scope;
     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.
     127The 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}
     131Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same scope;
    153132a {\CC} program can not.
    154133\end{rationale}
     
    159138
    160139\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.
    161 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 \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.
     140Instead, 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.
    162142Within one translation unit, each instance of an identifier with \Index{internal linkage} denotes the same object or function in the same circumstances.
    163143Identifiers with \Index{no linkage} always denote unique entities.
    164144\begin{rationale}
    165 A \CFA program can declare an ©extern int v© and an ©extern float v©;
     145A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$;
    166146a C program cannot.
    167147\end{rationale}
     
    186166\end{lstlisting}
    187167
    188 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., ©sumable©.
     168The 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$.
    189169The instantiation then has the semantics that would result if the type parameters were substituted into the type generator declaration by macro substitution.
    190170
     
    234214\CFA defines situations where values of one type are automatically converted to another type.
    235215These conversions are called \define{implicit conversion}s.
    236 The programmer can request \define{explicit conversion}s using cast expressions.
     216The programmer can request
     217\define{explicit conversion}s using cast expressions.
    237218
    238219
     
    246227In \CFA, these conversions play a role in overload resolution, and collectively are called the \define{safe arithmetic conversion}s.
    247228
    248 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$.
    249 Let ©unsigned$_{mr}$© be the unsigned integer type with maximal rank.
     229Let \(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$.
     230Let \(unsigned_{mr}\) be the unsigned integer type with maximal rank.
    250231
    251232The following conversions are \emph{direct} safe arithmetic conversions.
     
    254235The \Index{integer promotion}s.
    255236\item
    256 For every rank $r$ greater than or equal to the rank of ©int©, conversion from ©int$_r$© to ©unsigned$_r$©.
    257 \item
    258 For 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
    260 Conversion from ©unsigned$_{mr}$© to ©float©.
     237For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\) to \(unsigned_r\).
     238\item
     239For 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
     241Conversion from \(unsigned_{mr}\) to \lstinline$float$.
    261242\item
    262243Conversion from an enumerated type to its compatible integer type.
    263244\item
    264 Conversion from ©float© to ©double©, and from ©double© to ©long double©.
    265 \item
    266 Conversion from ©float _Complex© to ©double _Complex©, and from ©double _Complex© to ©long double _Complex©.
     245Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to \lstinline$long double$.
     246\item
     247Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$, and from \lstinline$double _Complex$ to \lstinline$long double _Complex$.
    267248\begin{sloppypar}
    268249\item
    269 Conversion from ©float _Imaginary© to ©double _Imaginary©, and from ©double _Imaginary© to ©long double _Imaginary©, if the implementation supports imaginary types.
     250Conversion 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.
    270251\end{sloppypar}
    271252\end{itemize}
    272253
    273 If 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.
     254If 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.
    274255
    275256\begin{rationale}
     
    285266\label{anon-conv}
    286267
    287 If 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.
     268If 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.
    288270The result of the conversion is a pointer to the member.
    289271
     
    293275        int x, y;
    294276};
    295 void move_by( struct point * p1, struct point * p2 ) {§\impl{move_by}§
     277void move_by( struct point * p1, struct point * p2 ) {@\impl{move_by}@
    296278        p1->x += p2.x;
    297279        p1->y += p2.y;
     
    303285move_to( &cp1, &cp2 );
    304286\end{lstlisting}
    305 Thanks to implicit conversion, the two arguments that ©move_by()© receives are pointers to ©cp1©'s second member and ©cp2©'s second member.
     287Thanks 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.
    306289
    307290
     
    345328a direct safe arithmetic conversion;
    346329\item
    347 from any object type or incomplete type to ©void©;
    348 \item
    349 from a pointer to any non-©void© type to a pointer to ©void©;
     330from any object type or incomplete type to \lstinline$void$;
     331\item
     332from a pointer to any non-\lstinline$void$ type to a pointer to \lstinline$void$;
    350333\item
    351334from a pointer to any type to a pointer to a more qualified version of the type\index{qualified type};
     
    358341Conversions that are not safe conversions are \define{unsafe conversion}s.
    359342\begin{rationale}
    360 As in C, there is an implicit conversion from ©void *© to any pointer type.
     343As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type.
    361344This is clearly dangerous, and {\CC} does not have this implicit conversion.
    362345\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.
     
    384367\begin{itemize}
    385368\item
    386 The cost of an implicit conversion from ©int© to ©long© is 1.
    387 The 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
    390 If ©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©.
    391 Otherwise, ©unsigned short© is converted directly to ©unsigned©, and the cost is 1.
    392 
    393 \item
    394 If ©long© can represent all the values of ©unsigned©, then the conversion cost of ©unsigned© to ©long© is 1.
     369The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1.
     370The 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
     373If \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$.
     375Otherwise, \lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1.
     376
     377\item
     378If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost of \lstinline$unsigned$ to \lstinline$long$ is 1.
    395379Otherwise, the conversion is an unsafe conversion, and its conversion cost is undefined.
    396380\end{itemize}
    397381
    398 
    399382\section{Lexical elements}
    400 
    401 
    402383\subsection{Keywords}
    403 
    404384\begin{syntax}
    405385\oldlhs{keyword}
    406 \rhs ©forall©
    407 \rhs ©lvalue©
    408 \rhs ©trait©
    409 \rhs ©dtype©
    410 \rhs ©ftype©
    411 \rhs ©otype©
     386        \rhs \lstinline$forall$
     387        \rhs \lstinline$lvalue$
     388        \rhs \lstinline$trait$
     389        \rhs \lstinline$dtype$
     390        \rhs \lstinline$ftype$
     391        \rhs \lstinline$type$
    412392\end{syntax}
    413393
     
    416396
    417397\CFA allows operator \Index{overloading} by associating operators with special function identifiers.
    418 Furthermore, 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.
     398Furthermore, 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.
    419399Programmers can use these identifiers to declare functions and objects that implement operators and constants for their own types.
    420400
     
    425405\begin{syntax}
    426406\oldlhs{identifier}
    427 \rhs ©0©
    428 \rhs ©1©
     407\rhs \lstinline$0$
     408\rhs \lstinline$1$
    429409\end{syntax}
    430410
    431 \index{constant identifiers}\index{identifiers!for constants} The tokens ``©0©''\impl{0} and ``©1©''\impl{1} are identifiers.
     411\index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0} and ``\lstinline$1$''\impl{1} are identifiers.
    432412No other tokens defined by the rules for integer constants are considered to be identifiers.
    433413\begin{rationale}
    434 Why ``©0©'' and ``©1©''? Those integers have special status in C.
     414Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C.
    435415All scalar types can be incremented and decremented, which is defined in terms of adding or subtracting 1.
    436 The operations ``©&&©'', ``©||©'', and ``©!©'' can be applied to any scalar arguments, and are defined in terms of comparison against 0.
     416The operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any scalar arguments, and are defined in terms of comparison against 0.
    437417A \nonterm{constant-expression} that evaluates to 0 is effectively compatible with every pointer type.
    438418
    439419In 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.
    440420However, 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.
    441 Defining special constants for a user-defined type is more efficient than defining a conversion to the type from ©_Bool©.
    442 
    443 Why \emph{just} ``©0©'' and ``©1©''? Why not other integers? No other integers have special status in C.
    444 A facility that let programmers declare specific constants---``©const Rational 12©'', for instance---would not be much of an improvement.
     421Defining special constants for a user-defined type is more efficient than defining a conversion to the type from \lstinline$_Bool$.
     422
     423Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers have special status in C.
     424A facility that let programmers declare specific constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement.
    445425Some facility for defining the creation of values of programmer-defined types from arbitrary integer tokens would be needed.
    446426The complexity of such a feature doesn't seem worth the gain.
     
    458438\begin{tabular}[t]{ll}
    459439%identifier & operation \\ \hline
    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{?/?}\\
     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{?/?}\\
    473453\end{tabular}\hfil
    474454\begin{tabular}[t]{ll}
    475455%identifier & operation \\ \hline
    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{?&?}\\
     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{?&?}\\
    488468\end{tabular}\hfil
    489469\begin{tabular}[t]{ll}
    490470%identifier & operation \\ \hline
    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{?"|=?}\\
     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{?"|=?}\\
    504484\end{tabular}
    505485\hfil
     
    516496
    517497\begin{rationale}
    518 The 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 ``©--©''.
     498The 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$--$''.
    520500\end{rationale}
    521501
     
    524504\begin{itemize}
    525505\item
    526 The logical operators ``©&&©'' and ``©||©'', and the conditional operator ``©?:©''.
     506The logical operators ``\lstinline$&&$'' and ``\lstinline$||$'', and the conditional operator
     507``\lstinline$?:$''.
    527508These 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.
    528 Note 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.
     509Note 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.
    529510
    530511\item
     
    535516\item
    536517The ``address of'' operator.
    537 It would seem useful to define a unary ``©&©'' operator that returns values of some programmer-defined pointer-like type.
     518It would seem useful to define a unary ``\lstinline$&$'' operator that returns values of some programmer-defined pointer-like type.
    538519The problem lies with the type of the operator.
    539 Consider the expression ``©p = &x©'', where ©x© is of type ©T© and ©p© has the programmer-defined type ©T_ptr©.
    540 The expression might be treated as a call to the unary function ``©&?©''.
    541 Now 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.
    542 Hence the parameter must have type ©T *©.
    543 But then the expression must be rewritten as ``©p = &?( &x )©''
     520Consider 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$.
     522The expression might be treated as a call to the unary function ``\lstinline$&?$''.
     523Now 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.
     524Hence the parameter must have type \lstinline$T *$.
     525But then the expression must be rewritten as ``\lstinline$p = &?( &x )$''
    544526---which doesn't seem like progress!
    545527
    546528The 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''.
    547 It seems simpler to define a conversion function from ©T *© to ©T_ptr©.
    548 
    549 \item
    550 The ©sizeof© operator.
     529It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$.
     530
     531\item
     532The \lstinline$sizeof$ operator.
    551533It is already defined for every object type, and intimately tied into the language's storage allocation model.
    552534Redefining it seems pointless.
    553535
    554536\item
    555 The ``member of'' operators ``©.©'' and ``©->©''.
     537The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''.
    556538These are not really infix operators, since their right ``operand'' is not a value or object.
    557539
     
    590572The ``fewest unsafe conversions'' rule ensures that the usual conversions are done, if possible.
    591573The ``lowest total expression cost'' rule chooses the proper common type.
    592 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: ©(double)-i© will be preferred to ©-(double)i©.
     574The 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$.
    593575
    594576The ``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.
    595 It also gives preference to monomorphic values (such as the ©int© ©0©) over polymorphic values (such as the \Index{null pointer} ©0©\use{0}).
     577It 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}).
    596580However, interpretations that call polymorphic functions are preferred to interpretations that perform unsafe conversions, because those conversions potentially lose accuracy or violate strong typing.
    597581
     
    613597\begin{rationale}
    614598Predefined functions and constants have internal linkage because that simplifies optimization in traditional compile-and-link environments.
    615 For instance, ``©an_int + an_int©'' is equivalent to ``©?+?(an_int, an_int)©''.
     599For instance, ``\lstinline$an_int + an_int$'' is equivalent to ``\lstinline$?+?(an_int, an_int)$''.
    616600If integer addition has not been redefined in the current scope, a compiler can generate code to perform the addition directly.
    617601If predefined functions had external linkage, this optimization would be difficult.
     
    639623\rhs \nonterm{constant}
    640624\rhs \nonterm{string-literal}
    641 \rhs ©(© \nonterm{expression} ©)©
     625\rhs \lstinline$($ \nonterm{expression} \lstinline$)$
    642626\rhs \nonterm{generic-selection}
    643627\end{syntax}
     
    645629\predefined
    646630\begin{lstlisting}
    647 const int 1;§\use{1}§
    648 const int 0;§\use{0}§
     631const int 1;@\use{1}@
     632const int 0;@\use{0}@
    649633forall( dtype DT ) DT * const 0;
    650634forall( ftype FT ) FT * const 0;
     
    655639
    656640A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type and value defined by {\c11}.
    657 The predefined integer identifiers ``©1©'' and ``©0©'' have the integer values 1 and 0, respectively.
    658 The 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.
     641The predefined integer identifiers ``\lstinline$1$'' and ``\lstinline$0$'' have the integer values 1 and 0, respectively.
     642The 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.
    659643
    660644A parenthesised expression has the same interpretations as the contained \nonterm{expression}.
    661645
    662646\examples
    663 The 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 *©.
    664 In each case, the null pointer conversion is better\index{best valid interpretations} than the unsafe conversion of the integer ©0© to a pointer.
     647The 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 *$.
     648In 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.
    665650
    666651\begin{rationale}
     
    668653
    669654\CFA does not have C's concept of ``null pointer constants'', which are not typed values but special strings of tokens.
    670 The C token ``©0©'' is an expression of type ©int© with the value ``zero'', and it \emph{also} is a null pointer constant.
    671 Similarly, ``©(void *)0© is an expression of type ©(void *)© whose value is a null pointer, and it also is a null pointer constant.
    672 However, in C, ``©(void *)(void *)0©'' is
     655The C token ``\lstinline$0$'' is an expression of type \lstinline$int$ with the value ``zero'', and it \emph{also} is a null pointer constant.
     656Similarly,
     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.
     658However, in C, ``\lstinline$(void *)(void *)0$'' is
    673659\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.
    674660
     
    677663\begin{lstlisting}
    678664forall( dtype DT ) DT * const 0;
    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.
     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.
    680666The only such value is the null pointer.
    681667Therefore the type \emph{alone} is enough to identify a null pointer.
     
    687673
    688674\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.
    689 If 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.
     675If 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.
    690676
    691677\semantics
     
    698684\lhs{postfix-expression}
    699685\rhs \nonterm{primary-expression}
    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} ©,© ©}©
     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$}$
    709695\lhs{argument-expression-list}
    710696\rhs \nonterm{assignment-expression}
    711 \rhs \nonterm{argument-expression-list} ©,©
     697\rhs \nonterm{argument-expression-list} \lstinline$,$
    712698         \nonterm{assignment-expression}
    713699\end{syntax}
     
    715701\rewriterules
    716702\begin{lstlisting}
    717 a[b] => ?[?]( b, a ) // if a has integer type§\use{?[?]}§
    718 a[b] => ?[?]( a, b ) // otherwise
    719 a( §\emph{arguments}§ ) => ?()( a, §\emph{arguments}§ )§\use{?()}§
    720 a++ => ?++(&( a ))§\use{?++}§
    721 a-- => ?--(&( a ))§\use{?--}§
     703a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type@\use{?[?]}@
     704a[b] @\rewrite@ ?[?]( a, b ) // otherwise
     705a( @\emph{arguments}@ ) @\rewrite@ ?()( a, @\emph{arguments}@ )@\use{?()}@
     706a++ @\rewrite@ ?++(&( a ))@\use{?++}@
     707a-- @\rewrite@ ?--(&( a ))@\use{?--}@
    722708\end{lstlisting}
    723709
     
    727713\predefined
    728714\begin{lstlisting}
    729 forall( otype T ) lvalue T ?[?]( T *, ptrdiff_t );§\use{ptrdiff_t}§
     715forall( otype T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@
    730716forall( otype T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t );
    731717forall( otype T ) lvalue const T ?[?]( const T *, ptrdiff_t );
     
    747733The interpretations of subscript expressions are the interpretations of the corresponding function call expressions.
    748734\begin{rationale}
    749 C 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 ©?[?]©.
     735C 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$?[?]$.
    750737
    751738Subscript expressions are rewritten as function calls that pass the first parameter by value.
    752739This is somewhat unfortunate, since array-like types tend to be large.
    753 The alternative is to use the rewrite rule ``©a[b] => ?[?](&(a), b)©''.
    754 However, C semantics forbid this approach: the ©a© in ``©a[b]©'' can be an arbitrary pointer value, which does not have an address.
     740The alternative is to use the rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''.
     741However, C semantics forbid this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which does not have an address.
    755742
    756743The repetitive form of the predefined identifiers shows up a deficiency\index{deficiencies!pointers
     
    767754\nonterm{postfix-expression} in a function call may have some interpretations that are function designators and some that are not.
    768755
    769 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 ``©?()©''.
     756For 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$?()$''.
    770757The valid interpretations of the rewritten expression are determined in the manner described below.
    771758
     
    774761\begin{itemize}
    775762\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
    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.
     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.
    777765\end{itemize}
    778766The type of the valid interpretation is the return type of the function designator.
    779767
    780 For 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
     768For 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
    781770\begin{itemize}
    782771\item
    783 If the declaration of the implicit parameter uses \Index{type-class} ©type©\use{type}, the implicit argument must be an object type;
    784 if it uses ©dtype©, the implicit argument must be an object type or an incomplete type;
    785 and if it uses ©ftype©, the implicit argument must be a function type.
     772If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the implicit argument must be an object type;
     773if it uses \lstinline$dtype$, the implicit argument must be an object type or an incomplete type;
     774and if it uses \lstinline$ftype$, the implicit argument must be a function type.
    786775
    787776\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.
     
    802791\begin{rationale}
    803792One 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}.
    804 For 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.
     793For 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.
    807797Consider
    808798\begin{lstlisting}
     
    815805f = g( d, f );          // (3) (unsafe conversion to float)
    816806\end{lstlisting}
    817 If ©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 
    819 Another example is the function ``©void h( int *);©''.
    820 This function can be passed a ©void *© argument, but the generalization ``©forall( otype T ) void h( T *);©'' can not.
    821 In this case, ©void© is not a valid value for ©T© because it is not an object type.
    822 If unsafe conversions were allowed, ©T© could be inferred to be \emph{any} object type, which is undesirable.
     807If \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
     810Another example is the function ``\lstinline$void h( int *);$''.
     811This function can be passed a
     812\lstinline$void *$ argument, but the generalization ``\lstinline$forall( otype T ) void h( T *);$'' can not.
     813In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an object type.
     814If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any} object type, which is undesirable.
    823815\end{rationale}
    824816
    825817\examples
    826 A function called ``©?()©'' might be part of a numerical differentiation package.
     818A function called ``\lstinline$?()$'' might be part of a numerical differentiation package.
    827819\begin{lstlisting}
    828820extern otype Derivative;
     
    835827d = sin_dx( 12.9 );
    836828\end{lstlisting}
    837 Here, the only interpretation of ©sin_dx© is as an object of type ©Derivative©.
    838 For that interpretation, the function call is treated as ``©?()( sin_dx, 12.9 )©''.
     829Here, the only interpretation of \lstinline$sin_dx$ is as an object of type \lstinline$Derivative$.
     830For that interpretation, the function call is treated as ``\lstinline$?()( sin_dx, 12.9 )$''.
    839831\begin{lstlisting}
    840832int f( long );          // (1)
     
    843835int i = f( 5 );         // calls (1)
    844836\end{lstlisting}
    845 Function (1) provides a valid interpretation of ``©f( 5 )©'', using an implicit ©int© to ©long© conversion.
    846 The 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.
     837Function (1) provides a valid interpretation of ``\lstinline$f( 5 )$'', using an implicit \lstinline$int$ to \lstinline$long$ conversion.
     838The 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.
    847839
    848840\begin{lstlisting}
     
    850842double d = h( 1.5 );
    851843\end{lstlisting}
    852 ``©1.5©'' is a ©double© constant, so ©T© is inferred to be ©double©, and the result of the function call is a ©double©.
     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$.
    853846
    854847\begin{lstlisting}
    855848forall( otype T, otype U ) void g( T, U );      // (4)
    856849forall( otype T ) void g( T, T );                       // (5)
    857 forall( otype T ) void g( T, long );            // (6)
     850forall( otype T ) void g( T, long );                    // (6)
    858851void g( long, long );                                           // (7)
    859852double d;
    860853int i;
    861854int *p;
    862 g( d, d );                                                                      // calls (5)
    863 g( d, i );                                                                      // calls (6)
    864 g( i, i );                                                                      // calls (7)
    865 g( i, p );                                                                      // calls (4)
    866 \end{lstlisting}
    867 The 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).
     855g( d, d );                      // calls (5)
     856g( d, i );                      // calls (6)
     857g( i, i );                      // calls (7)
     858g( i, p );                      // calls (4)
     859\end{lstlisting}
     860The 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).
    868861
    869862For the second call, (7) is again discarded.
    870 Of the remaining interpretations for (4), (5), and (6) (with ©i© converted to ©long©), (6) is chosen because it is the least polymorphic.
     863Of the remaining interpretations for (4), (5), and (6) (with \lstinline$i$ converted to \lstinline$long$), (6) is chosen because it is the least polymorphic.
    871864
    872865The third call has valid interpretations for all of the functions;
     
    877870forall( otype T ) T min( T, T );
    878871double max( double, double );
    879 trait min_max( T ) {§\impl{min_max}§
     872trait min_max( T ) {@\impl{min_max}@
    880873        T min( T, T );
    881874        T max( T, T );
     
    884877shuffle( 9, 10 );
    885878\end{lstlisting}
    886 The 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}
    888 extern void q( int );                                           // (8)
    889 extern void q( void * );                                        // (9)
     879The 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}
     882extern void q( int );           // (8)
     883extern void q( void * );        // (9)
    890884extern void r();
    891885q( 0 );
    892886r( 0 );
    893887\end{lstlisting}
    894 The ©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).
    895 The former is chosen because the ©int© ©0© is \Index{less polymorphic}.
    896 For the same reason, ©int© ©0© is passed to ©r()©, even though it has \emph{no} declared parameter types.
     888The \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).
     889The former is chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}.
     890For the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has \emph{no} declared parameter types.
    897891
    898892
    899893\subsubsection{Structure and union members}
    900894
    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©.
    902 If 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.
    903 If 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.
     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$.
     896If 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.
     898If 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.
    904900The expression has no other interpretations.
    905901
    906 The expression ``©p->m©'' has the same interpretations as the expression ``©(*p).m©''.
     902The expression ``\lstinline$p->m$'' has the same interpretations as the expression
     903``\lstinline$(*p).m$''.
    907904
    908905
     
    999996        * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    1000997\end{lstlisting}
    1001 For every extended integer type ©X© there exist
     998For every extended integer type \lstinline$X$ there exist
    1002999% Don't use predefined: keep this out of prelude.cf.
    10031000\begin{lstlisting}
     
    10051002  ?--( volatile X * ), ?--( _Atomic volatile X * );
    10061003\end{lstlisting}
    1007 For every complete enumerated type ©E© there exist
     1004For every complete enumerated type \lstinline$E$ there exist
    10081005% Don't use predefined: keep this out of prelude.cf.
    10091006\begin{lstlisting}
     
    10131010
    10141011\begin{rationale}
    1015 Note 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.
     1012Note 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.
    10161013This partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues.
    10171014\end{rationale}
     
    10191016\begin{rationale}
    10201017In C, a semantic rule requires that pointer operands of increment and decrement be pointers to object types.
    1021 Hence, ©void *© objects cannot be incremented.
    1022 In \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©.
     1018Hence, \lstinline$void *$ objects cannot be incremented.
     1019In \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$.
    10231020\end{rationale}
    10241021
    10251022\semantics
    10261023First, each interpretation of the operand of an increment or decrement expression is considered separately.
    1027 For 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.
     1024For 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.
    10281026
    10291027For the remaining interpretations, the expression is rewritten, and the interpretations of the expression are the interpretations of the corresponding function call.
     
    10381036\end{lstlisting}
    10391037\begin{sloppypar}
    1040 Since ©&(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 *©.
    1042 Note that there is no conversion that adds an ©_Atomic© qualifier, so the ©_Atomic volatile short int© overloading does not provide a valid interpretation.
     1038Since \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 *$.
     1042Note 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.
    10431043\end{sloppypar}
    10441044
    1045 There 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 
    1047 The 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.
     1045There 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
     1047The 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.
    10481048\begin{lstlisting}
    10491049char * const restrict volatile * restrict volatile pqpc;
     
    10521052ppc++;
    10531053\end{lstlisting}
    1054 Since ©&(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©.
     1054Since \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$.
    10571057
    10581058\begin{rationale}
     
    10681068\begin{enumerate}
    10691069\item
    1070 ``©char * p; p++;©''.
    1071 The argument to ©?++© has type ©char * *©, and the result has type ©char *©.
    1072 The expression would be valid if ©?++© were declared by
     1070``\lstinline$char * p; p++;$''.
     1071The argument to \lstinline$?++$ has type \lstinline$char * *$, and the result has type \lstinline$char *$.
     1072The expression would be valid if \lstinline$?++$ were declared by
    10731073\begin{lstlisting}
    10741074forall( otype T ) T * ?++( T * * );
    1075 \end{lstlisting} with ©T© inferred to be ©char©.
    1076 
    1077 \item
    1078 ``©char *restrict volatile qp; qp++©''.
    1079 The 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.
     1075\end{lstlisting} with \lstinline$T$ inferred to be \lstinline$char$.
     1076
     1077\item
     1078``\lstinline$char *restrict volatile qp; qp++$''.
     1079The 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.
    10801080Hence the actual predefined function is
    10811081\begin{lstlisting}
    10821082forall( otype T ) T * ?++( T * restrict volatile * );
    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++©''.
    1087 The result again has type ©char *©, but no safe conversion adds an ©_Atomic© qualifier, so the function in point 2 is not applicable.
    1088 A separate overloading of ©?++© is required.
    1089 
    1090 \item
    1091 ``©char const volatile * pq; pq++©''.
    1092 Here the result has type ©char const volatile *©, so a new overloading is needed:
     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++$''.
     1088The result again has type \lstinline$char *$, but no safe conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable.
     1089A separate overloading of \lstinline$?++$ is required.
     1090
     1091\item
     1092``\lstinline$char const volatile * pq; pq++$''.
     1093Here the result has type
     1094\lstinline$char const volatile *$, so a new overloading is needed:
    10931095\begin{lstlisting}
    10941096forall( otype T ) T const volatile * ?++( T const volatile *restrict volatile * );
     
    10971099 
    10981100\item
    1099 ``©float *restrict * prp; prp++©''.
    1100 The ©restrict© qualifier is handled just like ©const© and ©volatile© in the previous case:
     1101``\lstinline$float *restrict * prp; prp++$''.
     1102The \lstinline$restrict$ qualifier is handled just like \lstinline$const$ and \lstinline$volatile$ in the previous case:
    11011103\begin{lstlisting}
    11021104forall( otype T ) T restrict * ?++( T restrict *restrict volatile * );
    1103 \end{lstlisting} with ©T© inferred to be ©float *©.
    1104 This 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.
     1105\end{lstlisting} with \lstinline$T$ inferred to be \lstinline$float *$.
     1106This 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.
    11051107\end{enumerate}
    11061108\end{rationale}
     
    11171119\begin{syntax}
    11181120\lhs{unary-expression}
    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 ©&© ©*© ©+© ©-© ©~© ©!©
     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$!$
    11271128\end{syntax}
    11281129
    11291130\rewriterules
    11301131\begin{lstlisting}
    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{--?}§
     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{--?}@
    11381139\end{lstlisting}
    11391140
     
    12311232        * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    12321233\end{lstlisting}
    1233 For every extended integer type ©X© there exist
     1234For every extended integer type \lstinline$X$ there exist
    12341235% Don't use predefined: keep this out of prelude.cf.
    12351236\begin{lstlisting}
     
    12391240        --?( _Atomic volatile X * );
    12401241\end{lstlisting}
    1241 For every complete enumerated type ©E© there exist
     1242For every complete enumerated type \lstinline$E$ there exist
    12421243% Don't use predefined: keep this out of prelude.cf.
    12431244\begin{lstlisting}
     
    12761277
    12771278\constraints
    1278 The operand of the unary ``©&©'' operator shall have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.
     1279The operand of the unary ``\lstinline$&$'' operator shall have exactly one
     1280\Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.
    12791281
    12801282\semantics
    1281 The ``©&©'' expression has one interpretation which is of type ©T *©, where ©T© is the type of the operand.
     1283The ``\lstinline$&$'' expression has one interpretation which is of type \lstinline$T *$, where
     1284\lstinline$T$ is the type of the operand.
    12821285
    12831286The interpretations of an indirection expression are the interpretations of the corresponding function call.
     
    13081311forall( ftype FT ) int !?( FT * );
    13091312\end{lstlisting}
    1310 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1313For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
    13111314% Don't use predefined: keep this out of prelude.cf.
    13121315\begin{lstlisting}
     
    13211324\begin{lstlisting}
    13221325long int li;
    1323 void eat_double( double );§\use{eat_double}§
    1324 eat_double(-li ); // => eat_double( -?( li ) );
    1325 \end{lstlisting}
    1326 The valid interpretations of ``©-li©'' (assuming no extended integer types exist) are
     1326void eat_double( double );@\use{eat_double}@
     1327eat_double(-li ); // @\rewrite@ eat_double( -?( li ) );
     1328\end{lstlisting}
     1329The valid interpretations of ``\lstinline$-li$'' (assuming no extended integer types exist) are
    13271330\begin{center}
    13281331\begin{tabular}{llc} interpretation & result type & expression conversion cost \\
    13291332\hline
    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) \\
     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) \\
    13421345\end{tabular}
    13431346\end{center}
    1344 The valid interpretations of the ©eat_double© call, with the cost of the argument conversion and the cost of the entire expression, are
     1347The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument conversion and the cost of the entire expression, are
    13451348\begin{center}
    13461349\begin{tabular}{lcc} interpretation & argument cost & expression cost \\
    13471350\hline
    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) \\
     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) \\
    13601363\end{tabular}
    13611364\end{center}
    1362 Each has result type ©void©, so the best must be selected.
     1365Each has result type \lstinline$void$, so the best must be selected.
    13631366The interpretations involving unsafe conversions are discarded.
    1364 The 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}
     1367The 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}
    13681373
    13691374\constraints
    1370 The operand of ©sizeof© or ©_Alignof© shall not be ©type©, ©dtype©, or ©ftype©.
    1371 
    1372 When 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 
    1374 When ©sizeof© is applied to an identifier declared by a \nonterm{type-declaration} or a
     1375The operand of \lstinline$sizeof$ or \lstinline$_Alignof$ shall not be \lstinline$type$,
     1376\lstinline$dtype$, or \lstinline$ftype$.
     1377
     1378When 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
     1380When \lstinline$sizeof$ is applied to an identifier declared by a \nonterm{type-declaration} or a
    13751381\nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand.
    13761382When the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the expression is not a constant expression.
    13771383
    1378 When ©_Alignof© is applied to an identifier declared by a \nonterm{type-declaration} or a
     1384When \lstinline$_Alignof$ is applied to an identifier declared by a \nonterm{type-declaration} or a
    13791385\nonterm{type-parameter}, it yields the alignment requirement of the type that implements the operand.
    13801386When the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the expression is not a constant expression.
     
    13831389otype Pair = struct { int first, second; };
    13841390size_t p_size = sizeof(Pair);           // constant expression
    1385 extern otype Rational;§\use{Rational}§
     1391extern otype Rational;@\use{Rational}@
    13861392size_t c_size = sizeof(Rational);       // non-constant expression
    13871393forall(type T) T f(T p1, T p2) {
     
    13901396}
    13911397\end{lstlisting}
    1392 ``©sizeof Rational©'', although not statically known, is fixed.
    1393 Within ©f()©, ``©sizeof(T)©'' is fixed for each call of ©f()©, but may vary from call to call.
     1398``\lstinline$sizeof Rational$'', although not statically known, is fixed.
     1399Within \lstinline$f()$,
     1400``\lstinline$sizeof(T)$'' is fixed for each call of \lstinline$f()$, but may vary from call to call.
    13941401\end{rationale}
    13951402
     
    14001407\lhs{cast-expression}
    14011408\rhs \nonterm{unary-expression}
    1402 \rhs ©(© \nonterm{type-name} ©)© \nonterm{cast-expression}
     1409\rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \nonterm{cast-expression}
    14031410\end{syntax}
    14041411
    14051412\constraints
    1406 The \nonterm{type-name} in a \nonterm{cast-expression} shall not be ©type©, ©dtype©, or ©ftype©.
     1413The \nonterm{type-name} in a \nonterm{cast-expression} shall not be \lstinline$type$,
     1414\lstinline$dtype$, or \lstinline$ftype$.
    14071415
    14081416\semantics
    14091417
    1410 In 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;
    1412 otherwise, ©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.
     1418In 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;
     1420otherwise, \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.
    14131421The 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.
    14141422
     
    14231431\lhs{multiplicative-expression}
    14241432\rhs \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}
     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}
    14281436\end{syntax}
    14291437
    14301438\rewriterules
    14311439\begin{lstlisting}
    1432 a * b => ?*?( a, b )§\use{?*?}§
    1433 a / b => ?/?( a, b )§\use{?/?}§
    1434 a % b => ?%?( a, b )§\use{?%?}§
     1440a * b @\rewrite@ ?*?( a, b )@\use{?*?}@
     1441a / b @\rewrite@ ?/?( a, b )@\use{?/?}@
     1442a % b @\rewrite@ ?%?( a, b )@\use{?%?}@
    14351443\end{lstlisting}
    14361444
     
    14591467        ?*?( _Complex long double, _Complex long double ), ?/?( _Complex long double, _Complex long double );
    14601468\end{lstlisting}
    1461 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1469For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
    14621470% Don't use predefined: keep this out of prelude.cf.
    14631471\begin{lstlisting}
     
    14661474
    14671475\begin{rationale}
    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.
     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.
    14691478\end{rationale}
    14701479
     
    14761485int i;
    14771486long li;
    1478 void eat_double( double );§\use{eat_double}§
     1487void eat_double( double );@\use{eat_double}@
    14791488eat_double( li % i );
    14801489\end{lstlisting}
    1481 ``©li % i©'' is rewritten as ``©?%?(li, i )©''.
    1482 The 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
     1490``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''.
     1491The 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
    14831492\begin{center}
    14841493\begin{tabular}{lcc} interpretation & argument cost & result cost \\
    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     \\
     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     \\
    14921501\end{tabular}
    14931502\end{center}
    1494 The 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©.
    1498 If ©s© is a ©short int©, ``©s *s©'' does not have type ©short int©;
    1499 it is treated as ``©( (int)s ) * ( (int)s )©'', and has type ©int©. \CFA matches that pattern;
    1500 it does not predefine ``©short ?*?( short, short )©''.
     1503The 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$;
     1509it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches that pattern;
     1510it does not predefine ``\lstinline$short ?*?( short, short )$''.
    15011511
    15021512These ``missing'' operators limit polymorphism.
     
    15071517square( s );
    15081518\end{lstlisting}
    1509 Since \CFA does not define a multiplication operator for ©short int©, ©square( s )© is treated as ©square( (int)s )©, and the result has type ©int©.
     1519Since \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$.
    15101522This is mildly surprising, but it follows the {\c11} operator pattern.
    15111523
     
    15161528product( sa, 5);
    15171529\end{lstlisting}
    1518 This has no valid interpretations, because \CFA has no conversion from ``array of ©short int©'' to ``array of ©int©''.
     1530This has no valid interpretations, because \CFA has no conversion from ``array of
     1531\lstinline$short int$'' to ``array of \lstinline$int$''.
    15191532The alternatives in such situations include
    15201533\begin{itemize}
    15211534\item
    1522 Defining monomorphic overloadings of ©product© for ©short© and the other ``small'' types.
    1523 \item
    1524 Defining ``©short ?*?( short, short )©'' within the scope containing the call to ©product©.
    1525 \item
    1526 Defining ©product© to take as an argument a conversion function from the ``small'' type to the operator's argument type.
     1535Defining monomorphic overloadings of \lstinline$product$ for \lstinline$short$ and the other
     1536``small'' types.
     1537\item
     1538Defining ``\lstinline$short ?*?( short, short )$'' within the scope containing the call to
     1539\lstinline$product$.
     1540\item
     1541Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to the operator's argument type.
    15271542\end{itemize}
    15281543\end{rationale}
     
    15341549\lhs{additive-expression}
    15351550\rhs \nonterm{multiplicative-expression}
    1536 \rhs \nonterm{additive-expression} ©+© \nonterm{multiplicative-expression}
    1537 \rhs \nonterm{additive-expression} ©-© \nonterm{multiplicative-expression}
     1551\rhs \nonterm{additive-expression} \lstinline$+$ \nonterm{multiplicative-expression}
     1552\rhs \nonterm{additive-expression} \lstinline$-$ \nonterm{multiplicative-expression}
    15381553\end{syntax}
    15391554
    15401555\rewriterules
    15411556\begin{lstlisting}
    1542 a + b => ?+?( a, b )§\use{?+?}§
    1543 a - b => ?-?( a, b )§\use{?-?}§
     1557a + b @\rewrite@ ?+?( a, b )@\use{?+?}@
     1558a - b @\rewrite@ ?-?( a, b )@\use{?-?}@
    15441559\end{lstlisting}
    15451560
     
    15941609        * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * );
    15951610\end{lstlisting}
    1596 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1611For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
    15971612% Don't use predefined: keep this out of prelude.cf.
    15981613\begin{lstlisting}
     
    16041619
    16051620\begin{rationale}
    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.
     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.
    16071622It 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.
    1608 The {\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.
     1623The {\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.
    16091624\end{rationale}
    16101625
     
    16151630\lhs{shift-expression}
    16161631\rhs \nonterm{additive-expression}
    1617 \rhs \nonterm{shift-expression} ©<<© \nonterm{additive-expression}
    1618 \rhs \nonterm{shift-expression} ©>>© \nonterm{additive-expression}
     1632\rhs \nonterm{shift-expression} \lstinline$<<$ \nonterm{additive-expression}
     1633\rhs \nonterm{shift-expression} \lstinline$>>$ \nonterm{additive-expression}
    16191634\end{syntax}
    16201635
    1621 \rewriterules
    1622 \begin{lstlisting}
    1623 a << b => ?<<?( a, b )§\use{?<<?}§
    1624 a >> b => ?>>?( a, b )§\use{?>>?}§
     1636\rewriterules \use{?>>?}%use{?<<?}
     1637\begin{lstlisting}
     1638a << b @\rewrite@ ?<<?( a, b )
     1639a >> b @\rewrite@ ?>>?( a, b )
    16251640\end{lstlisting}
    16261641
     
    16341649long long unsigned int ?<<?( long long unsigned int, int ), ?>>?( long long unsigned int, int);
    16351650\end{lstlisting}
    1636 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1651For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
    16371652% Don't use predefined: keep this out of prelude.cf.
    16381653\begin{lstlisting}
     
    16541669\lhs{relational-expression}
    16551670\rhs \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}
     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}
    16601675\end{syntax}
    16611676
    1662 \rewriterules
    1663 \begin{lstlisting}
    1664 a < b => ?<?( a, b )§\use{?<?}§
    1665 a > b => ?>?( a, b )§\use{?>?}§
    1666 a <= b => ?<=?( a, b )§\use{?<=?}§
    1667 a >= b => ?>=?( a, b )§\use{?>=?}§
     1677\rewriterules\use{?>?}\use{?>=?}%use{?<?}%use{?<=?}
     1678\begin{lstlisting}
     1679a < b @\rewrite@ ?<?( a, b )
     1680a > b @\rewrite@ ?>?( a, b )
     1681a <= b @\rewrite@ ?<=?( a, b )
     1682a >= b @\rewrite@ ?>=?( a, b )
    16681683\end{lstlisting}
    16691684
     
    16971712        ?>=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * );
    16981713\end{lstlisting}
    1699 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1714For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
    17001715% Don't use predefined: keep this out of prelude.cf.
    17011716\begin{lstlisting}
     
    17151730\lhs{equality-expression}
    17161731\rhs \nonterm{relational-expression}
    1717 \rhs \nonterm{equality-expression} ©==© \nonterm{relational-expression}
    1718 \rhs \nonterm{equality-expression} ©!=© \nonterm{relational-expression}
     1732\rhs \nonterm{equality-expression} \lstinline$==$ \nonterm{relational-expression}
     1733\rhs \nonterm{equality-expression} \lstinline$!=$ \nonterm{relational-expression}
    17191734\end{syntax}
    17201735
    17211736\rewriterules
    17221737\begin{lstlisting}
    1723 a == b => ?==?( a, b )§\use{?==?}§
    1724 a != b => ?!=?( a, b )§\use{?"!=?}§
     1738a == b @\rewrite@ ?==?( a, b )@\use{?==?}@
     1739a != b @\rewrite@ ?!=?( a, b )@\use{?"!=?}@
    17251740\end{lstlisting}
    17261741
     
    17751790        ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ), ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * );
    17761791\end{lstlisting}
    1777 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1792For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
    17781793% Don't use predefined: keep this out of prelude.cf.
    17791794\begin{lstlisting}
     
    17831798
    17841799\begin{rationale}
    1785 The 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.
     1800The 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.
    17861801In the last case, a special constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA type system.
    17871802\end{rationale}
     
    18041819\lhs{AND-expression}
    18051820\rhs \nonterm{equality-expression}
    1806 \rhs \nonterm{AND-expression} ©&© \nonterm{equality-expression}
     1821\rhs \nonterm{AND-expression} \lstinline$&$ \nonterm{equality-expression}
    18071822\end{syntax}
    18081823
    18091824\rewriterules
    18101825\begin{lstlisting}
    1811 a & b => ?&?( a, b )§\use{?&?}§
     1826a & b @\rewrite@ ?&?( a, b )@\use{?&?}@
    18121827\end{lstlisting}
    18131828
     
    18211836long long unsigned int ?&?( long long unsigned int, long long unsigned int );
    18221837\end{lstlisting}
    1823 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1838For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
    18241839% Don't use predefined: keep this out of prelude.cf.
    18251840\begin{lstlisting}
     
    18361851\lhs{exclusive-OR-expression}
    18371852\rhs \nonterm{AND-expression}
    1838 \rhs \nonterm{exclusive-OR-expression} ©^© \nonterm{AND-expression}
     1853\rhs \nonterm{exclusive-OR-expression} \lstinline$^$ \nonterm{AND-expression}
    18391854\end{syntax}
    18401855
    18411856\rewriterules
    18421857\begin{lstlisting}
    1843 a ^ b => ?^?( a, b )§\use{?^?}§
     1858a ^ b @\rewrite@ ?^?( a, b )@\use{?^?}@
    18441859\end{lstlisting}
    18451860
     
    18531868long long unsigned int ?^?( long long unsigned int, long long unsigned int );
    18541869\end{lstlisting}
    1855 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1870For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
    18561871% Don't use predefined: keep this out of prelude.cf.
    18571872\begin{lstlisting}
     
    18681883\lhs{inclusive-OR-expression}
    18691884\rhs \nonterm{exclusive-OR-expression}
    1870 \rhs \nonterm{inclusive-OR-expression} ©|© \nonterm{exclusive-OR-expression}
     1885\rhs \nonterm{inclusive-OR-expression} \lstinline$|$ \nonterm{exclusive-OR-expression}
    18711886\end{syntax}
    18721887
    1873 \rewriterules
    1874 \begin{lstlisting}
    1875 a | b => ?|?( a, b )§\use{?"|?}§
     1888\rewriterules\use{?"|?}
     1889\begin{lstlisting}
     1890a | b @\rewrite@ ?|?( a, b )
    18761891\end{lstlisting}
    18771892
     
    18851900long long unsigned int ?|?( long long unsigned int, long long unsigned int );
    18861901\end{lstlisting}
    1887 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1902For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the rank of \lstinline$int$ there exist
    18881903% Don't use predefined: keep this out of prelude.cf.
    18891904\begin{lstlisting}
     
    19001915\lhs{logical-AND-expression}
    19011916\rhs \nonterm{inclusive-OR-expression}
    1902 \rhs \nonterm{logical-AND-expression} ©&&© \nonterm{inclusive-OR-expression}
     1917\rhs \nonterm{logical-AND-expression} \lstinline$&&$ \nonterm{inclusive-OR-expression}
    19031918\end{syntax}
    19041919
    1905 \semantics The operands of the expression ``©a && b©'' are treated as ``©(int)((a)!=0)©'' and ``©(int)((b)!=0)©'', which shall both be unambiguous.
    1906 The expression has only one interpretation, which is of type ©int©.
    1907 \begin{rationale}
    1908 When 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 
    1910 A common C idiom omits comparisons to ©0© in the controlling expressions of loops and ©if© statements.
    1911 For instance, the loop below iterates as long as ©rp© points at a ©Rational© value that is non-zero.
    1912 
    1913 \begin{lstlisting}
    1914 extern otype Rational;§\use{Rational}§
    1915 extern const Rational 0;§\use{0}§
     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.
     1922The expression has only one interpretation, which is of type \lstinline$int$.
     1923\begin{rationale}
     1924When 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
     1926A common C idiom omits comparisons to \lstinline$0$ in the controlling expressions of loops and
     1927\lstinline$if$ statements.
     1928For instance, the loop below iterates as long as \lstinline$rp$ points at a \lstinline$Rational$ value that is non-zero.
     1929
     1930\begin{lstlisting}
     1931extern otype Rational;@\use{Rational}@
     1932extern const Rational 0;@\use{0}@
    19161933extern int ?!=?( Rational, Rational );
    19171934Rational *rp;
    19181935while ( rp && *rp ) { ... }
    19191936\end{lstlisting}
    1920 The logical expression calls the ©Rational© inequality operator, passing it ©*rp© and the ©Rational 0©, and getting a 1 or 0 as a result.
    1921 In contrast, {\CC} would apply a programmer-defined ©Rational©-to-©int© conversion to ©*rp© in the equivalent situation.
    1922 The 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.
     1937The 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.
     1938In contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$ conversion to \lstinline$*rp$ in the equivalent situation.
     1939The 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.
    19231940\end{rationale}
    19241941
     
    19291946\lhs{logical-OR-expression}
    19301947\rhs \nonterm{logical-AND-expression}
    1931 \rhs \nonterm{logical-OR-expression} ©||© \nonterm{logical-AND-expression}
     1948\rhs \nonterm{logical-OR-expression} \lstinline$||$ \nonterm{logical-AND-expression}
    19321949\end{syntax}
    19331950
    19341951\semantics
    19351952
    1936 The operands of the expression ``©a || b©'' are treated as ``©(int)((a)!=0)©'' and ``©(int)((b))!=0)©'', which shall both be unambiguous.
    1937 The expression has only one interpretation, which is of type ©int©.
     1953The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous.
     1954The expression has only one interpretation, which is of type \lstinline$int$.
    19381955
    19391956
     
    19431960\lhs{conditional-expression}
    19441961\rhs \nonterm{logical-OR-expression}
    1945 \rhs \nonterm{logical-OR-expression} ©?© \nonterm{expression}
    1946          ©:© \nonterm{conditional-expression}
     1962\rhs \nonterm{logical-OR-expression} \lstinline$?$ \nonterm{expression}
     1963         \lstinline$:$ \nonterm{conditional-expression}
    19471964\end{syntax}
    19481965
    19491966\semantics
    1950 In 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
     1967In 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
    19511968\begin{lstlisting}
    19521969( int)(( a)!=0) ? ( void)( b) : ( void)( c)
    19531970\end{lstlisting}
    19541971
    1955 If 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
     1972If 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
    19561973\begin{lstlisting}
    19571974forall( otype T ) T cond( int, T, T );
     
    20052022rand() ? i : l;
    20062023\end{lstlisting}
    2007 The best interpretation infers the expression's type to be ©long© and applies the safe ©int©-to-©long© conversion to ©i©.
     2024The 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$.
    20082026
    20092027\begin{lstlisting}
     
    20122030rand() ? cip : vip;
    20132031\end{lstlisting}
    2014 The expression has type ©const volatile int *©, with safe conversions applied to the second and third operands to add ©volatile© and ©const© qualifiers, respectively.
     2032The 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.
    20152033
    20162034\begin{lstlisting}
    20172035rand() ? cip : 0;
    20182036\end{lstlisting}
    2019 The expression has type ©const int *©, with a specialization conversion applied to ©0©.
     2037The expression has type \lstinline$const int *$, with a specialization conversion applied to
     2038\lstinline$0$.
    20202039
    20212040
     
    20282047         \nonterm{assignment-expression}
    20292048\lhs{assignment-operator} one of
    2030 \rhs ©=©\ \ ©*=©\ \ ©/=©\ \ ©%=©\ \ ©+=©\ \ ©-=©\ \ ©<<=©\ \ ©>>=©\ \ ©&=©\ \ ©^=©\ \ ©|=©
     2049\rhs \lstinline$=$\ \ \lstinline$*=$\ \ \lstinline$/=$\ \ \lstinline$%=$\ \ \lstinline$+=$\ \ \lstinline$-=$\ \ 
     2050         \lstinline$<<=$\ \ \lstinline$>>=$\ \ \lstinline$&=$\ \ \lstinline$^=$\ \ \lstinline$|=$
    20312051\end{syntax}
    20322052
    20332053\rewriterules
    2034 Let ``©<-©'' be any of the assignment operators.
     2054Let ``\(\leftarrow\)'' be any of the assignment operators.
    20352055Then
    2036 \use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}\use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}
    2037 \begin{lstlisting}
    2038 a <- b => ?<-?( &( a ), b )
     2056\use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}
     2057\use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}
     2058\begin{lstlisting}
     2059a @$\leftarrow$@ b @\rewrite@ ?@$\leftarrow$@?( &( a ), b )
    20392060\end{lstlisting}
    20402061
    20412062\semantics
    20422063Each interpretation of the left operand of an assignment expression is considered separately.
    2043 For 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.
     2064For 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.
    20442065The right operand is cast to that type, and the assignment expression is ambiguous if either operand is.
    20452066For the remaining interpretations, the expression is rewritten, and the interpretations of the assignment expression are the interpretations of the corresponding function call.
     
    22742295\end{lstlisting}
    22752296\begin{rationale}
    2276 The 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 
    2279 For every complete structure or union type ©S© there exist
     2297The 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
     2300For every complete structure or union type \lstinline$S$ there exist
    22802301% Don't use predefined: keep this out of prelude.cf.
    22812302\begin{lstlisting}
     
    22832304\end{lstlisting}
    22842305
    2285 For every extended integer type ©X© there exist
     2306For every extended integer type \lstinline$X$ there exist
    22862307% Don't use predefined: keep this out of prelude.cf.
    22872308\begin{lstlisting}
     
    22892310\end{lstlisting}
    22902311
    2291 For every complete enumerated type ©E© there exist
     2312For every complete enumerated type \lstinline$E$ there exist
    22922313% Don't use predefined: keep this out of prelude.cf.
    22932314\begin{lstlisting}
     
    22952316\end{lstlisting}
    22962317\begin{rationale}
    2297 The right-hand argument is ©int© because enumeration constants have type ©int©.
     2318The right-hand argument is \lstinline$int$ because enumeration constants have type \lstinline$int$.
    22982319\end{rationale}
    22992320
     
    25562577\end{lstlisting}
    25572578
    2558 For every extended integer type ©X© there exist
     2579For every extended integer type \lstinline$X$ there exist
    25592580% Don't use predefined: keep this out of prelude.cf.
    25602581\begin{lstlisting}
     
    25712592\end{lstlisting}
    25722593
    2573 For every complete enumerated type ©E© there exist
     2594For every complete enumerated type \lstinline$E$ there exist
    25742595% Don't use predefined: keep this out of prelude.cf.
    25752596\begin{lstlisting}
     
    25922613\lhs{expression}
    25932614\rhs \nonterm{assignment-expression}
    2594 \rhs \nonterm{expression} ©,© \nonterm{assignment-expression}
     2615\rhs \nonterm{expression} \lstinline$,$ \nonterm{assignment-expression}
    25952616\end{syntax}
    25962617
    25972618\semantics
    2598 In the comma expression ``©a, b©'', the first operand is interpreted as ``©( void )(a)©'', which shall be unambiguous\index{ambiguous interpretation}.
     2619In the comma expression ``\lstinline$a, b$'', the first operand is interpreted as
     2620``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}.
    25992621The interpretations of the expression are the interpretations of the second operand.
    26002622
     
    26312653{ ... }
    26322654\end{lstlisting}
    2633 Without the rule, ©Complex© would be a type in the first case, and a parameter name in the second.
     2655Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in the second.
    26342656\end{rationale}
    26352657
     
    26572679\examples
    26582680\begin{lstlisting}
    2659 struct point {§\impl{point}§
     2681struct point {@\impl{point}@
    26602682        int x, y;
    26612683};
    2662 struct color_point {§\impl{color_point}§
     2684struct color_point {@\impl{color_point}@
    26632685        enum { RED, BLUE, GREEN } color;
    26642686        struct point;
     
    26672689cp.x = 0;
    26682690cp.color = RED;
    2669 struct literal {§\impl{literal}§
     2691struct literal {@\impl{literal}@
    26702692        enum { NUMBER, STRING } tag;
    26712693        union {
     
    26882710\begin{syntax}
    26892711\lhs{forall-specifier}
    2690 \rhs ©forall© ©(© \nonterm{type-parameter-list} ©)©
     2712\rhs \lstinline$forall$ \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
    26912713\end{syntax}
    26922714
     
    27002722} mkPair( T, T ); // illegal
    27012723\end{lstlisting}
    2702 If an instance of ©struct Pair© was declared later in the current scope, what would the members' type be?
     2724If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the members' type be?
    27032725\end{rationale}
    27042726\end{comment}
     
    27072729The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type identifiers, function and object identifiers with \Index{no linkage}.
    27082730
    2709 If, in the declaration ``©T D©'', ©T© contains \nonterm{forall-specifier}s and ©D© has the form
    2710 \begin{lstlisting}
    2711 D( §\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.
     2731If, in the declaration ``\lstinline$T D$'', \lstinline$T$ contains \nonterm{forall-specifier}s and
     2732\lstinline$D$ has the form
     2733\begin{lstlisting}
     2734D( @\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.
    27142738The identifiers declared by assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s of that function declarator.
    27152739
     
    27202744If this restriction were lifted, it would be possible to write
    27212745\begin{lstlisting}
    2722 forall( otype T ) T * alloc( void );§\use{alloc}§ int *p = alloc();
    2723 \end{lstlisting}
    2724 Here ©alloc()© would receive ©int© as an inferred argument, and return an ©int *©.
    2725 In 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 
    2727 With the current restriction, ©alloc()© must be given an argument that determines ©T©:
    2728 \begin{lstlisting}
    2729 forall( otype T ) T * alloc( T initial_value );§\use{alloc}§
     2746forall( otype T ) T * alloc( void );@\use{alloc}@ int *p = alloc();
     2747\end{lstlisting}
     2748Here \lstinline$alloc()$ would receive \lstinline$int$ as an inferred argument, and return an
     2749\lstinline$int *$.
     2750In 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
     2752With the current restriction, \lstinline$alloc()$ must be given an argument that determines
     2753\lstinline$T$:
     2754\begin{lstlisting}
     2755forall( otype T ) T * alloc( T initial_value );@\use{alloc}@
    27302756\end{lstlisting}
    27312757\end{rationale}
     
    27332759
    27342760If a function declarator is part of a function definition, its inferred parameters and assertion parameters have \Index{block scope};
    2735 otherwise, identifiers declared by assertions have a \define{declaration scope}, which terminates at the end of the \nonterm{declaration}.
     2761otherwise, identifiers declared by assertions have a
     2762\define{declaration scope}, which terminates at the end of the \nonterm{declaration}.
    27362763
    27372764A function type that has at least one inferred parameter is a \define{polymorphic function} type.
     
    27422769Let $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.
    27432770Let $f'$ be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$.
    2744 Then $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.
     2771Then $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.
    27452773
    27462774\examples
     
    27502778forall( otype T ) T fT( T );
    27512779\end{lstlisting}
    2752 ©fi()© takes an ©int© and returns an ©int©. ©fT()© takes a ©T© and returns a ©T©, for any type ©T©.
     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$.
    27532782\begin{lstlisting}
    27542783int (*pfi )( int ) = fi;
    27552784forall( otype T ) T (*pfT )( T ) = fT;
    27562785\end{lstlisting}
    2757 ©pfi© and ©pfT© are pointers to functions. ©pfT© is not polymorphic, but the function it points at is.
     2786\lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not polymorphic, but the function it points at is.
    27582787\begin{lstlisting}
    27592788int (*fvpfi( void ))( int ) {
     
    27642793}
    27652794\end{lstlisting}
    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.
     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.
    27672796\begin{lstlisting}
    27682797forall( otype T ) int ( *fTpfi( T ) )( int );
     
    27702799forall( otype T, otype U ) U ( *fTpfU( T ) )( U );
    27712800\end{lstlisting}
    2772 ©fTpfi()© is a polymorphic function that returns a pointer to a monomorphic function taking an integer and returning an integer.
    2773 It 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()©.
    2775 For 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 *©.
     2801\lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function taking an integer and returning an integer.
     2802It 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()$.
     2804For 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 *$.
    27772808\begin{lstlisting}
    27782809forall( otype T, otype U, otype V ) U * f( T *, U, V * const );
    27792810forall( otype U, otype V, otype W ) U * g( V *, U, W * const );
    27802811\end{lstlisting}
    2781 The functions ©f()© and ©g()© have compatible types.
     2812The functions \lstinline$f()$ and \lstinline$g()$ have compatible types.
    27822813Let \(f\) and \(g\) be their types;
    2783 then \(f_1\) = ©T©, \(f_2\) = ©U©, \(f_3\) = ©V©, \(g_1\)
    2784 = ©V©, \(g_2\) = ©U©, and \(g_3\) = ©W©.
     2814then \(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$.
    27852816Replacing every \(f_i\) by \(g_i\) in \(f\) gives
    27862817\begin{lstlisting}
     
    27882819\end{lstlisting} which has a return type and parameter list that is compatible with \(g\).
    27892820\begin{rationale}
    2790 The 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.
     2821The 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.
    27912822
    27922823Even without parameterized types, I might try to allow
     
    28142845\subsection{Type qualifiers}
    28152846
    2816 \CFA defines a new type qualifier ©lvalue©\impl{lvalue}\index{lvalue}.
     2847\CFA defines a new type qualifier \lstinline$lvalue$\impl{lvalue}\index{lvalue}.
    28172848\begin{syntax}
    28182849\oldlhs{type-qualifier}
    2819 \rhs ©lvalue©
     2850\rhs \lstinline$lvalue$
    28202851\end{syntax}
    28212852
    28222853\constraints
    2823 \Indexc{restrict} Types other than type parameters and pointer types whose referenced type is an object type shall not be restrict-qualified.
     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.
    28242855
    28252856\semantics
    2826 An object's type may be a restrict-qualified type parameter.
    2827 ©restrict© does not establish any special semantics in that case.
     2857An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not establish any special semantics in that case.
    28282858
    28292859\begin{rationale}
     
    28312861\end{rationale}
    28322862
    2833 ©lvalue© may be used to qualify the return type of a function type.
    2834 Let ©T© be an unqualified version of a type;
    2835 then 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}
    2838 The ©const© and ©volatile© qualifiers can only be sensibly used to qualify the return type of a function if the ©lvalue© qualifier is also used.
     2863\lstinline$lvalue$ may be used to qualify the return type of a function type.
     2864Let \lstinline$T$ be an unqualified version of a type;
     2865then 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}
     2869The \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.
    28392870\end{rationale}
    28402871
     
    28432874
    28442875\begin{rationale}
    2845 ©lvalue© provides some of the functionality of {\CC}'s ``©T&©'' ( reference to object of type ©T©) type.
     2876\lstinline$lvalue$ provides some of the functionality of {\CC}'s ``\lstinline$T&$'' ( reference to object of type \lstinline$T$) type.
    28462877Reference types have four uses in {\CC}.
    28472878\begin{itemize}
    28482879\item
    2849 They are necessary for user-defined operators that return lvalues, such as ``subscript'' and ``dereference''.
    2850 
    2851 \item
    2852 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 ©with© statement.
     2880They are necessary for user-defined operators that return lvalues, such as ``subscript'' and
     2881``dereference''.
     2882
     2883\item
     2884A 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.
    28532885The following {\CC} code gives an example.
    28542886\begin{lstlisting}
     
    28632895A reference parameter can be used to allow a function to modify an argument without forcing the caller to pass the address of the argument.
    28642896This is most useful for user-defined assignment operators.
    2865 In {\CC}, plain assignment is done by a function called ``©operator=©'', and the two expressions
     2897In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and the two expressions
    28662898\begin{lstlisting}
    28672899a = b;
    28682900operator=( a, b );
    28692901\end{lstlisting} are equivalent.
    2870 If ©a© and ©b© are of type ©T©, then the first parameter of ©operator=© must have type ``©T&©''.
    2871 It 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 
    2873 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 ``©a = b;©'' is equivalent to ``©operator=(&( a), b )©''.
    2874 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 ``©&©''.
     2902If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first parameter of \lstinline$operator=$ must have type ``\lstinline$T&$''.
     2903It 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
     2907In 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 )$''.
     2909Reference 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$&$''.
    28752910
    28762911\item
    28772912References to \Index{const-qualified} types can be used instead of value parameters.  Given the
    2878 {\CC} function call ``©fiddle( a_thing )©'', where the type of ©a_thing© is
    2879 ©Thing©, the type of ©fiddle© could be either of
     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
    28802915\begin{lstlisting}
    28812916void fiddle( Thing );
    28822917void fiddle( const Thing & );
    28832918\end{lstlisting}
    2884 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 ©fiddle© the parameter is subject to the usual problems caused by aliases.
    2885 The reference form might be chosen for efficiency's sake if ©Thing©s are too large or their constructors or destructors are too expensive.
     2919If 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.
     2920The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too large or their constructors or destructors are too expensive.
    28862921An implementation may switch between them without causing trouble for well-behaved clients.
    28872922This leaves the implementor to define ``too large'' and ``too expensive''.
     
    28912926void fiddle( const volatile Thing );
    28922927\end{lstlisting} with call-by-reference.
    2893 Since 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''.
     2928Since 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''.
    28942929\end{itemize}
    28952930
     
    29112946\begin{syntax}
    29122947\lhs{spec-definition}
    2913 \rhs ©spec© \nonterm{identifier}
    2914         ©(© \nonterm{type-parameter-list} ©)©
    2915         ©{© \nonterm{spec-declaration-list}\opt ©}©
     2948\rhs \lstinline$spec$ \nonterm{identifier}
     2949        \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
     2950        \lstinline${$ \nonterm{spec-declaration-list}\opt \lstinline$}$
    29162951\lhs{spec-declaration-list}
    2917 \rhs \nonterm{spec-declaration} ©;©
    2918 \rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} ©;©
     2952\rhs \nonterm{spec-declaration} \lstinline$;$
     2953\rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} \lstinline$;$
    29192954\lhs{spec-declaration}
    29202955\rhs \nonterm{specifier-qualifier-list} \nonterm{declarator-list}
    29212956\lhs{declarator-list}
    29222957\rhs \nonterm{declarator}
    2923 \rhs \nonterm{declarator-list} ©,© \nonterm{declarator}
     2958\rhs \nonterm{declarator-list} \lstinline$,$ \nonterm{declarator}
    29242959\end{syntax}
    29252960\begin{rationale}
     
    29432978\rhs \nonterm{assertion-list} \nonterm{assertion}
    29442979\lhs{assertion}
    2945 \rhs ©|© \nonterm{identifier} ©(© \nonterm{type-name-list} ©)©
    2946 \rhs ©|© \nonterm{spec-declaration}
     2980\rhs \lstinline$|$ \nonterm{identifier} \lstinline$($ \nonterm{type-name-list} \lstinline$)$
     2981\rhs \lstinline$|$ \nonterm{spec-declaration}
    29472982\lhs{type-name-list}
    29482983\rhs \nonterm{type-name}
    2949 \rhs \nonterm{type-name-list} ©,© \nonterm{type-name}
     2984\rhs \nonterm{type-name-list} \lstinline$,$ \nonterm{type-name}
    29502985\end{syntax}
    29512986
     
    29542989The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}.
    29552990If the
    2956 \nonterm{type-parameter} uses type-class ©type©\use{type}, the argument shall be the type name of an \Index{object type};
    2957 if it uses ©dtype©, the argument shall be the type name of an object type or an \Index{incomplete type};
    2958 and if it uses ©ftype©, the argument shall be the type name of a \Index{function type}.
     2991\nonterm{type-parameter} uses type-class \lstinline$type$\use{type}, the argument shall be the type name of an \Index{object type};
     2992if it uses \lstinline$dtype$, the argument shall be the type name of an object type or an \Index{incomplete type};
     2993and if it uses \lstinline$ftype$, the argument shall be the type name of a \Index{function type}.
    29592994
    29602995\semantics
    2961 An \define{assertion} is a declaration of a collection of objects and functions, called \define{assertion parameters}.
     2996An \define{assertion} is a declaration of a collection of objects and functions, called
     2997\define{assertion parameters}.
    29622998
    29632999The 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.
     
    29683004\examples
    29693005\begin{lstlisting}
    2970 forall( otype T | T ?*?( T, T ))§\use{?*?}§
    2971 T square( T val ) {§\impl{square}§
     3006forall( otype T | T ?*?( T, T ))@\use{?*?}@
     3007T square( T val ) {@\impl{square}@
    29723008        return val + val;
    29733009}
    2974 trait summable( otype T ) {§\impl{summable}§
    2975         T ?+=?( T *, T );§\use{?+=?}§
    2976         const T 0;§\use{0}§
     3010trait summable( otype T ) {@\impl{summable}@
     3011        T ?+=?( T *, T );@\use{?+=?}@
     3012        const T 0;@\use{0}@
    29773013};
    2978 trait list_of( otype List, otype Element ) {§\impl{list_of}§
     3014trait list_of( otype List, otype Element ) {@\impl{list_of}@
    29793015        Element car( List );
    29803016        List cdr( List );
     
    29853021trait sum_list( otype List, otype Element | summable( Element ) | list_of( List, Element ) ) {};
    29863022\end{lstlisting}
    2987 ©sum_list© contains seven declarations, which describe a list whose elements can be added up.
    2988 The assertion ``©|sum_list( i_list, int )©''\use{sum_list} produces the assertion parameters
     3023\lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added up.
     3024The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion parameters
    29893025\begin{lstlisting}
    29903026int ?+=?( int *, int );
     
    30033039\lhs{type-parameter-list}
    30043040\rhs \nonterm{type-parameter}
    3005 \rhs \nonterm{type-parameter-list} ©,© \nonterm{type-parameter}
     3041\rhs \nonterm{type-parameter-list} \lstinline$,$ \nonterm{type-parameter}
    30063042\lhs{type-parameter}
    30073043\rhs \nonterm{type-class} \nonterm{identifier} \nonterm{assertion-list}\opt
    30083044\lhs{type-class}
    3009 \rhs ©type©
    3010 \rhs ©dtype©
    3011 \rhs ©ftype©
     3045\rhs \lstinline$type$
     3046\rhs \lstinline$dtype$
     3047\rhs \lstinline$ftype$
    30123048\lhs{type-declaration}
    3013 \rhs \nonterm{storage-class-specifier}\opt ©type© \nonterm{type-declarator-list} \verb|;|
     3049\rhs \nonterm{storage-class-specifier}\opt \lstinline$type$ \nonterm{type-declarator-list} \verb|;|
    30143050\lhs{type-declarator-list}
    30153051\rhs \nonterm{type-declarator}
    3016 \rhs \nonterm{type-declarator-list} ©,© \nonterm{type-declarator}
     3052\rhs \nonterm{type-declarator-list} \lstinline$,$ \nonterm{type-declarator}
    30173053\lhs{type-declarator}
    3018 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt ©=© \nonterm{type-name}
     3054\rhs \nonterm{identifier} \nonterm{assertion-list}\opt \lstinline$=$ \nonterm{type-name}
    30193055\rhs \nonterm{identifier} \nonterm{assertion-list}\opt
    30203056\end{syntax}
     
    30273063
    30283064An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}.
    3029 Identifiers declared with type-class ©type©\use{type} are \Index{object type}s;
    3030 those declared with type-class ©dtype©\use{dtype} are \Index{incomplete type}s;
    3031 and those declared with type-class ©ftype©\use{ftype} are \Index{function type}s.
     3065Identifiers declared with type-class \lstinline$type$\use{type} are \Index{object type}s;
     3066those declared with type-class
     3067\lstinline$dtype$\use{dtype} are \Index{incomplete type}s;
     3068and those declared with type-class
     3069\lstinline$ftype$\use{ftype} are \Index{function type}s.
    30323070The 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}.
    30333071
     
    30373075Within 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.
    30383076
    3039 A 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}.
    3040 If 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).
     3077A 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}.
     3078If 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).
    30413080\begin{rationale}
    30423081Incomplete type declarations allow compact mutually-recursive types.
     
    30553094\end{rationale}
    30563095
    3057 A type declaration without an initializer and with \Index{storage-class specifier} ©extern©\use{extern} is an \define{opaque type declaration}.
    3058 Opaque types are \Index{object type}s.
     3096A type declaration without an initializer and with \Index{storage-class specifier}
     3097\lstinline$extern$\use{extern} is an \define{opaque type declaration}.
     3098Opaque types are
     3099\Index{object type}s.
    30593100An opaque type is not a \nonterm{constant-expression};
    3060 neither is a structure or union that has a member whose type is not a \nonterm{constant-expression}.
    3061 Every other \Index{object type} is a \nonterm{constant-expression}.
     3101neither 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}.
    30623103Objects with static storage duration shall be declared with a type that is a \nonterm{constant-expression}.
    30633104\begin{rationale}
     
    30693110\end{rationale}
    30703111
    3071 An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a value of \Index{type-class} ©dtype©.
    3072 An object type\index{object types} which is not a qualified version of a type is a value of type-classes ©type© and ©dtype©.
    3073 A \Index{function type} is a value of type-class ©ftype©.
     3112An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a value of \Index{type-class} \lstinline$dtype$.
     3113An 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$.
     3114A
     3115\Index{function type} is a value of type-class \lstinline$ftype$.
    30743116\begin{rationale}
    30753117Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which omits the identifier being declared.
     
    30803122
    30813123Type qualifiers are a weak point of C's type system.
    3082 Consider 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}
    3084 char *strchr( const char *s, int c ) {§\impl{strchr}§
     3124Consider 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}
     3127char *strchr( const char *s, int c ) {@\impl{strchr}@
    30853128        char real_c = c; // done because c was declared as int.
    30863129        for ( ; *s != real_c; s++ )
     
    30893132}
    30903133\end{lstlisting}
    3091 The 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.
    3092 Hence the body must perform a cast, and ( even worse) ©strchr()© provides a type-safe way to attempt to modify constant strings.
    3093 What is needed is some way to say that ©s©'s type might contain qualifiers, and the result type has exactly the same qualifiers.
     3134The 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.
     3135Hence the body must perform a cast, and ( even worse)
     3136\lstinline$strchr()$ provides a type-safe way to attempt to modify constant strings.
     3137What is needed is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has exactly the same qualifiers.
    30943138Polymorphic functions do not provide a fix for this deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of type values.
    3095 Instead, overloading can be used to define ©strchr()© for each combination of qualifiers.
     3139Instead, overloading can be used to define \lstinline$strchr()$ for each combination of qualifiers.
    30963140\end{rationale}
    30973141
     
    31173161};
    31183162\end{lstlisting}
    3119 Without 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©.
     3163Without 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$.
    31203165
    31213166A 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.
     
    31233168//  File a.c:
    31243169        extern type t1;
    3125         type t2 = struct { t1 f1; ... } // illegal
     3170        type t2 = struct { t1 f1; ... } // illegal
    31263171//  File b.c:
    31273172        extern type t2;
    3128         type t1 = struct { t2 f2; ... } // illegal
     3173        type t1 = struct { t2 f2; ... } // illegal
    31293174\end{lstlisting}
    31303175\end{rationale}
     
    31343179\nonterm{struct-declaration}, type declarations can not be structure members.
    31353180The form of
    3136 \nonterm{type-declaration} forbids arrays of, pointers to, and functions returning ©type©.
     3181\nonterm{type-declaration} forbids arrays of, pointers to, and functions returning \lstinline$type$.
    31373182Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued expressions.
    31383183It also side-steps the problem of type-valued expressions producing different values in different declarations.
     
    31493194#include <stdlib.h>
    31503195T * new( otype T ) { return ( T * )malloc( sizeof( T) ); };
    3151 ... int * ip = new( int );
    3152 \end{lstlisting}
    3153 This 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©;
     3196@\ldots@ int * ip = new( int );
     3197\end{lstlisting}
     3198This 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$;
    31543199it could be undefined, or a type name, or a function or variable name.
    31553200Nothing good can result from such a situation.
     
    31683213f2( v2 );
    31693214\end{lstlisting}
    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]©.
     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]$.
    31713216
    31723217A translation unit containing the declarations
    31733218\begin{lstlisting}
    3174 extern type Complex;§\use{Complex}§ // opaque type declaration
    3175 extern float abs( Complex );§\use{abs}§
    3176 \end{lstlisting} can contain declarations of complex numbers, which can be passed to ©abs©.
    3177 Some other translation unit must implement ©Complex© and ©abs©.
     3219extern type Complex;@\use{Complex}@ // opaque type declaration
     3220extern float abs( Complex );@\use{abs}@
     3221\end{lstlisting} can contain declarations of complex numbers, which can be passed to \lstinline$abs$.
     3222Some other translation unit must implement \lstinline$Complex$ and \lstinline$abs$.
    31783223That unit might contain the declarations
    31793224\begin{lstlisting}
    3180 otype Complex = struct { float re, im; };§\impl{Complex}§
    3181 Complex cplx_i = { 0.0, 1.0 };§\impl{cplx_i}§
    3182 float abs( Complex c ) {§\impl{abs( Complex )}§
     3225otype Complex = struct { float re, im; };@\impl{Complex}@
     3226Complex cplx_i = { 0.0, 1.0 };@\impl{cplx_i}@
     3227float abs( Complex c ) {@\impl{abs( Complex )}@
    31833228        return sqrt( c.re * c.re + c.im * c.im );
    31843229}
    31853230\end{lstlisting}
    3186 Note that ©c© is implicitly converted to a ©struct© so that its components can be retrieved.
    3187 
    3188 \begin{lstlisting}
    3189 otype Time_of_day = int;§\impl{Time_of_day}§ // seconds since midnight.
    3190 Time_of_day ?+?( Time_of_day t1, int seconds ) {§\impl{?+?}§
     3231Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can be retrieved.
     3232
     3233\begin{lstlisting}
     3234otype Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight.
     3235Time_of_day ?+?( Time_of_day t1, int seconds ) {@\impl{?+?}@
    31913236        return (( int)t1 + seconds ) % 86400;
    31923237}
    31933238\end{lstlisting}
    3194 ©t1© must be cast to its implementation type to prevent infinite recursion.
     3239\lstinline$t1$ must be cast to its implementation type to prevent infinite recursion.
    31953240
    31963241\begin{rationale}
    31973242Within the scope of a type definition, an instance of the type can be viewed as having that type or as having the implementation type.
    3198 In the ©Time_of_day© example, the difference is important.
     3243In the \lstinline$Time_of_day$ example, the difference is important.
    31993244Different languages have treated the distinction between the abstraction and the implementation in different ways.
    32003245\begin{itemize}
    32013246\item
    32023247Inside a Clu cluster \cite{CLU}, the declaration of an instance states which view applies.
    3203 Two primitives called ©up© and ©down© can be used to convert between the views.
     3248Two primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views.
    32043249\item
    32053250The Simula class \cite{SIMULA87} is essentially a record type.
    32063251Since 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.
    32073252In {\CC}
    3208 \cite{C++}, operations on class instances include assignment and ``©&©'', which can be overloaded.
     3253\cite{C++}, operations on class instances include assignment and ``\lstinline$&$'', which can be overloaded.
    32093254A ``scope resolution'' operator can be used inside the class to specify whether the abstract or implementation version of the operation should be used.
    32103255\item
     
    32193264In this case, explicit conversions between the derived type and the old type can be used.
    32203265\end{itemize}
    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©.
     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$.
    32223267\end{rationale}
    32233268
     
    32253270\subsubsection{Default functions and objects}
    32263271
    3227 A 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©.
     3272A 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$.
    32283275\begin{rationale}
    32293276Assignment 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).
    32303277Without this rule, nearly every inferred type parameter would need an accompanying assignment assertion parameter.
    3231 If a type parameter should not have an assignment operation, ©dtype© should be used.
     3278If a type parameter should not have an assignment operation,
     3279\lstinline$dtype$ should be used.
    32323280If 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.
    32333281\end{rationale}
    32343282
    3235 A definition\index{type definition} of a type identifier ©T© with \Index{implementation type} ©I© and type-class ©type© implicitly defines a default assignment function.
    3236 A 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.
    3237 The default objects and functions have the same \Index{scope} and \Index{linkage} as the identifier ©T©.
     3283A 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.
     3284A 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.
     3286The default objects and functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$.
    32383287Their values are determined as follows:
    32393288\begin{itemize}
    32403289\item
    3241 If 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.
    3242 Otherwise the scope of the declaration of ©T© must contain a definition of the default object.
     3290If 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.
     3291Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default object.
    32433292
    32443293\item
    3245 If 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 
    3247 Otherwise, 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 
    3249 Otherwise the scope of the declaration of ©T© must contain a definition of the default function.
     3294If 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
     3296Otherwise, 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
     3298Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default function.
    32503299\end{itemize}
    32513300\begin{rationale}
     
    32533302\end{rationale}
    32543303
    3255 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 ©T© replaces the default function or object.
     3304A 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.
    32563305
    32573306\examples
     
    32633312Pair b = { 1, 1 };
    32643313\end{lstlisting}
    3265 The definition of ©Pair© implicitly defines two objects ©a© and ©b©.
    3266 ©Pair a© inherits its value from the ©struct impl a©.
    3267 The definition of ©Pair b© is compulsory because there is no ©struct impl b© to construct a value from.
     3314The 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$.
     3316The definition of
     3317\lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a value from.
    32683318\begin{lstlisting}
    32693319trait ss( otype T ) {
     
    32713321        void munge( T * );
    32723322}
    3273 otype Whatsit | ss( Whatsit );§\use{Whatsit}§
    3274 otype Doodad | ss( Doodad ) = struct doodad {§\use{Doodad}§
     3323otype Whatsit | ss( Whatsit );@\use{Whatsit}@
     3324otype Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@
    32753325        Whatsit; // anonymous member
    32763326        int extra;
     
    32783328Doodad clone( Doodad ) { ... }
    32793329\end{lstlisting}
    3280 The definition of ©Doodad© implicitly defines three functions:
     3330The definition of \lstinline$Doodad$ implicitly defines three functions:
    32813331\begin{lstlisting}
    32823332Doodad ?=?( Doodad *, Doodad );
     
    32843334void munge( Doodad * );
    32853335\end{lstlisting}
    3286 The 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.
    3288 Hence the definition of ``©Doodad clone( Doodad )©'' is necessary.
     3336The 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.
     3340Hence the definition of
     3341``\lstinline$Doodad clone( Doodad )$'' is necessary.
    32893342
    32903343Default functions and objects are subject to the normal scope rules.
    32913344\begin{lstlisting}
    3292 otype T = ...;
    3293 T a_T = ...;            // Default assignment used.
     3345otype T = @\ldots@;
     3346T a_T = @\ldots@;               // Default assignment used.
    32943347T ?=?( T *, T );
    3295 T a_T = ...;            // Programmer-defined assignment called.
     3348T a_T = @\ldots@;               // Programmer-defined assignment called.
    32963349\end{lstlisting}
    32973350\begin{rationale}
     
    33263379\begin{syntax}
    33273380\oldlhs{labeled-statement}
    3328 \rhs ©case© \nonterm{case-value-list} : \nonterm{statement}
     3381\rhs \lstinline$case$ \nonterm{case-value-list} : \nonterm{statement}
    33293382\lhs{case-value-list}
    33303383\rhs \nonterm{case-value}
    3331 \rhs \nonterm{case-value-list} ©,© \nonterm{case-value}
     3384\rhs \nonterm{case-value-list} \lstinline$,$ \nonterm{case-value}
    33323385\lhs{case-value}
    33333386\rhs \nonterm{constant-expression}
    33343387\rhs \nonterm{subrange}
    33353388\lhs{subrange}
    3336 \rhs \nonterm{constant-expression} ©~© \nonterm{constant-expression}
     3389\rhs \nonterm{constant-expression} \lstinline$~$ \nonterm{constant-expression}
    33373390\end{syntax}
    33383391
     
    33473400case 1~4, 9~14, 27~32:
    33483401\end{lstlisting}
    3349 The ©case© and ©default© clauses are restricted within the ©switch© and ©choose© statements, precluding Duff's device.
     3402The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$ and \lstinline$choose$ statements, precluding Duff's device.
    33503403
    33513404
    33523405\subsection{Expression and null statements}
    33533406
    3354 The expression in an expression statement is treated as being cast to ©void©.
     3407The expression in an expression statement is treated as being cast to \lstinline$void$.
    33553408
    33563409
     
    33593412\begin{syntax}
    33603413\oldlhs{selection-statement}
    3361 \rhs ©choose© ©(© \nonterm{expression} ©)© \nonterm{statement}
     3414\rhs \lstinline$choose$ \lstinline$($ \nonterm{expression} \lstinline$)$ \nonterm{statement}
    33623415\end{syntax}
    33633416
    3364 The controlling expression ©E© in the ©switch© and ©choose© statement:
     3417The controlling expression \lstinline$E$ in the \lstinline$switch$ and \lstinline$choose$ statement:
    33653418\begin{lstlisting}
    33663419switch ( E ) ...
     
    33683421\end{lstlisting} may have more than one interpretation, but it shall have only one interpretation with an integral type.
    33693422An \Index{integer promotion} is performed on the expression if necessary.
    3370 The constant expressions in ©case© statements with the switch are converted to the promoted type.
     3423The constant expressions in \lstinline$case$ statements with the switch are converted to the promoted type.
    33713424
    33723425
    33733426\setcounter{subsubsection}{3}
    3374 \subsubsection[The choose statement]{The \lstinline@choose@ statement}
    3375 
    3376 The ©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.
    3377 The ©fallthru© statement is used to fall through to the next ©case© or ©default© labeled statement.
     3427\subsubsection{The \lstinline$choose$ statement}
     3428
     3429The \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.
     3430The \lstinline$fallthru$ statement is used to fall through to the next \lstinline$case$ or \lstinline$default$ labeled statement.
    33783431The following have identical meaning:
    33793432\begin{flushleft}
     
    34003453\end{tabular}
    34013454\end{flushleft}
    3402 The ©choose© statement addresses the problem of accidental fall-through associated with the ©switch© statement.
     3455The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with the \lstinline$switch$ statement.
    34033456
    34043457
    34053458\subsection{Iteration statements}
    34063459
    3407 The controlling expression ©E© in the loops
     3460The controlling expression \lstinline$E$ in the loops
    34083461\begin{lstlisting}
    34093462if ( E ) ...
    34103463while ( E ) ...
    34113464do ... while ( E );
    3412 \end{lstlisting}
    3413 is treated as ``©( int )((E)!=0)©''.
     3465\end{lstlisting} is treated as ``\lstinline$( int )((E)!=0)$''.
    34143466
    34153467The statement
    34163468\begin{lstlisting}
    3417 for ( a; b; c ) ...
     3469for ( a; b; c ) @\ldots@
    34183470\end{lstlisting} is treated as
    34193471\begin{lstlisting}
     
    34263478\begin{syntax}
    34273479\oldlhs{jump-statement}
    3428 \rhs ©continue© \nonterm{identifier}\opt
    3429 \rhs ©break© \nonterm{identifier}\opt
     3480\rhs \lstinline$continue$ \nonterm{identifier}\opt
     3481\rhs \lstinline$break$ \nonterm{identifier}\opt
    34303482\rhs \ldots
    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}
     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}
    34343486\end{syntax}
    34353487
    3436 Labeled ©continue© and ©break© allow useful but restricted control-flow that reduces the need for the ©goto© statement for exiting multiple nested control-structures.
     3488Labeled \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.
    34373489\begin{lstlisting}
    34383490L1: {                                                   // compound
     
    34613513
    34623514\setcounter{subsubsection}{1}
    3463 \subsubsection[The continue statement]{The \lstinline@continue@ statement}
    3464 
    3465 The 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 
    3470 The 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 
    3475 An 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}
     3515\subsubsection{The \lstinline$continue$ statement}
     3516
     3517The 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
     3522The 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
     3527An 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}
    34793531
    34803532When an exception is raised, \Index{propagation} directs control from a raise in the source execution to a handler in the faulting execution.
    34813533
    34823534
    3483 \subsubsection[The throwResume statement]{The \lstinline@throwResume@ statement}
     3535\subsubsection{The \lstinline$throwResume$ statement}
    34843536
    34853537
     
    34883540\begin{syntax}
    34893541\lhs{exception-statement}
    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}
     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}
    34933545\lhs{handler-list}
    34943546\rhs \nonterm{handler-clause}
    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}
     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}
    34993551\lhs{handler-clause}
    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}
     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}
    35043556\lhs{finally-clause}
    3505 \rhs ©finally© \nonterm{compound-statement}
     3557\rhs \lstinline$finally$ \nonterm{compound-statement}
    35063558\lhs{exception-declaration}
    35073559\rhs \nonterm{type-specifier}
     
    35113563\rhs \nonterm{new-abstract-declarator-tuple}
    35123564\lhs{asynchronous-statement}
    3513 \rhs ©enable© \nonterm{identifier-list} \nonterm{compound-statement}
    3514 \rhs ©disable© \nonterm{identifier-list} \nonterm{compound-statement}
     3565\rhs \lstinline$enable$ \nonterm{identifier-list} \nonterm{compound-statement}
     3566\rhs \lstinline$disable$ \nonterm{identifier-list} \nonterm{compound-statement}
    35153567\end{syntax}
    35163568
     
    35183570
    35193571
    3520 \subsubsection[The try statement]{The \lstinline@try@ statement}
    3521 
    3522 The ©try© statement is a block with associated handlers, called a \Index{guarded block};
     3572\subsubsection{The \lstinline$try$ statement}
     3573
     3574The \lstinline$try$ statement is a block with associated handlers, called a \Index{guarded block};
    35233575all other blocks are \Index{unguarded block}s.
    3524 A ©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 
    3529 The ©enable©/©disable© statements toggle delivery of \Index{asynchronous exception}s.
     3576A \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
     3581The \lstinline$enable$/\lstinline$disable$ statements toggle delivery of \Index{asynchronous exception}s.
    35303582
    35313583
     
    35373589\subsection{Predefined macro names}
    35383590
    3539 The implementation shall define the macro names ©__LINE__©, ©__FILE__©, ©__DATE__©, and ©__TIME__©, as in the {\c11} standard.
    3540 It shall not define the macro name ©__STDC__©.
    3541 
    3542 In addition, the implementation shall define the macro name ©__CFORALL__© to be the decimal constant 1.
     3591The implementation shall define the macro names \lstinline$__LINE__$, \lstinline$__FILE__$,
     3592\lstinline$__DATE__$, and \lstinline$__TIME__$, as in the {\c11} standard.
     3593It shall not define the macro name \lstinline$__STDC__$.
     3594
     3595In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the decimal constant 1.
    35433596
    35443597
     
    35573610The pointer, integral, and floating-point types are all \define{scalar types}.
    35583611All of these types can be logically negated and compared.
    3559 The assertion ``©scalar( Complex )©'' should be read as ``type ©Complex© is scalar''.
    3560 \begin{lstlisting}
    3561 trait scalar( otype T ) {§\impl{scalar}§
     3612The assertion ``\lstinline$scalar( Complex )$'' should be read as ``type \lstinline$Complex$ is scalar''.
     3613\begin{lstlisting}
     3614trait scalar( otype T ) {@\impl{scalar}@
    35623615        int !?( T );
    35633616        int ?<?( T, T ), ?<=?( T, T ), ?==?( T, T ), ?>=?( T, T ), ?>?( T, T ), ?!=?( T, T );
     
    35693622This is equivalent to inheritance of specifications.
    35703623\begin{lstlisting}
    3571 trait arithmetic( otype T | scalar( T ) ) {§\impl{arithmetic}§§\use{scalar}§
     3624trait arithmetic( otype T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@
    35723625        T +?( T ), -?( T );
    35733626        T ?*?( T, T ), ?/?( T, T ), ?+?( T, T ), ?-?( T, T );
     
    35753628\end{lstlisting}
    35763629
    3577 The various flavors of ©char© and ©int© and the enumerated types make up the \define{integral types}.
    3578 \begin{lstlisting}
    3579 trait integral( otype T | arithmetic( T ) ) {§\impl{integral}§§\use{arithmetic}§
     3630The various flavors of \lstinline$char$ and \lstinline$int$ and the enumerated types make up the
     3631\define{integral types}.
     3632\begin{lstlisting}
     3633trait integral( otype T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@
    35803634        T ~?( T );
    35813635        T ?&?( T, T ), ?|?( T, T ), ?^?( T, T );
     
    35913645The only operation that can be applied to all modifiable lvalues is simple assignment.
    35923646\begin{lstlisting}
    3593 trait m_lvalue( otype T ) {§\impl{m_lvalue}§
     3647trait m_lvalue( otype T ) {@\impl{m_lvalue}@
    35943648        T ?=?( T *, T );
    35953649};
     
    36013655Scalars can also be incremented and decremented.
    36023656\begin{lstlisting}
    3603 trait m_l_scalar( otype T | scalar( T ) | m_lvalue( T ) ) {§\impl{m_l_scalar}§
    3604         T ?++( T * ), ?--( T * );§\use{scalar}§§\use{m_lvalue}§
     3657trait m_l_scalar( otype T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@
     3658        T ?++( T * ), ?--( T * );@\use{scalar}@@\use{m_lvalue}@
    36053659        T ++?( T * ), --?( T * );
    36063660};
     
    36083662
    36093663Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic.
    3610 Note that this results in the ``inheritance'' of ©scalar© along both paths.
    3611 \begin{lstlisting}
    3612 trait 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}§
     3664Note that this results in the ``inheritance'' of \lstinline$scalar$ along both paths.
     3665\begin{lstlisting}
     3666trait 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}@
    36143668        T ?+=?( T *, T ), ?-=?( T *, T );
    36153669};
    3616 trait 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}§
     3670trait 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}@
    36193673};
    36203674\end{lstlisting}
     
    36233677\subsection{Pointer and array types}
    36243678
    3625 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 ``©a[i]©'' is equivalent to the dereferencing expression ``©(*( a+( i )))©''.
    3626 Technically, 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.
     3679Array 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 )))$''.
     3681Technically, 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.
    36273683Consequently, there is no need for a separate ``array type'' specification.
    36283684
    36293685Pointer types are scalar types.
    3630 Like 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}
    3632 trait pointer( type P | scalar( P ) ) {§\impl{pointer}§§\use{scalar}§
     3686Like 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}
     3690trait pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@
    36333691        P ?+?( P, long int ), ?+?( long int, P ), ?-?( P, long int );
    36343692        ptrdiff_t ?-?( P, P );
    36353693};
    3636 trait m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {§\impl{m_l_pointer}§
     3694trait m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@
    36373695        P ?+=?( P *, long int ), ?-=?( P *, long int );
    36383696        P ?=?( P *, void * );
     
    36433701Specifications 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.
    36443702Different specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not included in types.
    3645 The assertion ``©|ptr_to( Safe_pointer, int )©'' should be read as ``©Safe_pointer© acts like a pointer to ©int©''.
    3646 \begin{lstlisting}
    3647 trait ptr_to( otype P | pointer( P ), otype T ) {§\impl{ptr_to}§§\use{pointer}§
     3703The 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}
     3706trait ptr_to( otype P | pointer( P ), otype T ) {@\impl{ptr_to}@@\use{pointer}@
    36483707        lvalue T *?( P );
    36493708        lvalue T ?[?]( P, long int );
    36503709};
    3651 trait ptr_to_const( otype P | pointer( P ), otype T ) {§\impl{ptr_to_const}§
     3710trait ptr_to_const( otype P | pointer( P ), otype T ) {@\impl{ptr_to_const}@
    36523711        const lvalue T *?( P );
    3653         const lvalue T ?[?]( P, long int );§\use{pointer}§
     3712        const lvalue T ?[?]( P, long int );@\use{pointer}@
    36543713};
    3655 trait ptr_to_volatile( otype P | pointer( P ), otype T ) }§\impl{ptr_to_volatile}§
     3714trait ptr_to_volatile( otype P | pointer( P ), otype T ) }@\impl{ptr_to_volatile}@
    36563715        volatile lvalue T *?( P );
    3657         volatile lvalue T ?[?]( P, long int );§\use{pointer}§
     3716        volatile lvalue T ?[?]( P, long int );@\use{pointer}@
    36583717};
    3659 trait ptr_to_const_volatile( otype P | pointer( P ), otype T ) }§\impl{ptr_to_const_volatile}§
    3660         const volatile lvalue T *?( P );§\use{pointer}§
     3718trait ptr_to_const_volatile( otype P | pointer( P ), otype T ) }@\impl{ptr_to_const_volatile}@
     3719        const volatile lvalue T *?( P );@\use{pointer}@
    36613720        const volatile lvalue T ?[?]( P, long int );
    36623721};
    36633722\end{lstlisting}
    36643723
    3665 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 ``©T *©'' can be assigned to a ``©const T *©'', a ``©volatile T *©'', and a ``©const volatile T *©''.
    3666 Again, the pointed-at type is passed in, so that assertions can connect these specifications to the ``©ptr_to©'' specifications.
    3667 \begin{lstlisting}
    3668 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}§ {
     3724Assignment 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 *$''.
     3725Again, the pointed-at type is passed in, so that assertions can connect these specifications to the
     3726``\lstinline$ptr_to$'' specifications.
     3727\begin{lstlisting}
     3728trait 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}@ {
    36693729        P ?=?( P *, T * );
    36703730        T * ?=?( T **, P );
    36713731};
    3672 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}§) {
     3732trait 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}@) {
    36733733        P ?=?( P *, const T * );
    36743734        const T * ?=?( const T **, P );
    36753735};
    3676 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}§
     3736trait 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}@
    36773737        P ?=?( P *, volatile T * );
    36783738        volatile T * ?=?( volatile T **, P );
    36793739};
    3680 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}§
    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}§
     3740trait 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}@
    36823742        P ?=?( P *, const volatile T * );
    36833743        const volatile T * ?=?( const volatile T **, P );
     
    36883748An 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.
    36893749\begin{lstlisting}
    3690 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 ) ) {
     3750trait 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 ) ) {
    36913751        MyP ?=?( MyP *, CP );
    36923752        CP ?=?( CP *, MyP );
    36933753};
    36943754\end{lstlisting}
    3695 The assertion ``©| m_l_ptr_like( Safe_ptr, const int * )©'' should be read as ``©Safe_ptr© is a pointer type like ©const int *©''.
    3696 This 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.
     3755The 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 *$''.
     3757This 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.
    36973760
    36983761
     
    37003763
    37013764Different operators often have related meanings;
    3702 for instance, in C, ``©+©'', ``©+=©'', and the two versions of ``©++©'' perform variations of addition.
     3765for instance, in C, ``\lstinline$+$'',
     3766``\lstinline$+=$'', and the two versions of ``\lstinline$++$'' perform variations of addition.
    37033767Languages 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.
    37043768Completeness and consistency is left to the good taste and discretion of the programmer.
     
    37133777The different comparison operators have obvious relationships, but there is no obvious subset of the operations to use in the implementation of the others.
    37143778However, 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;
    3715 the library function ©strcmp© is an example.
    3716 
    3717 C and \CFA have an extra, non-obvious comparison operator: ``©!©'', logical negation, returns 1 if its operand compares equal to 0, and 0 otherwise.
     3779the library function \lstinline$strcmp$ is an example.
     3780
     3781C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation, returns 1 if its operand compares equal to 0, and 0 otherwise.
    37183782\begin{lstlisting}
    37193783trait comparable( otype T ) {
     
    37633827\end{lstlisting}
    37643828
    3765 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 ©int_base©, ©arith_base© and ©comparable©.
     3829Note 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$.
    37663831Note also that these declarations provide guidance and assistance, but they do not define an absolutely minimal set of requirements.
    3767 A truly minimal implementation of an arithmetic type might only provide ©0©, ©1©, and ©?-=?©, which would be used by polymorphic ©?+=?©, ©?*=?©, and ©?/=?© functions.
    3768 
    3769 Note also that ©short© is an integer type in C11 terms, but has no operations!
     3832A 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
     3836Note also that \lstinline$short$ is an integer type in C11 terms, but has no operations!
    37703837
    37713838
     
    37743841
    37753842Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers.
    3776 This gets into ©noalias© territory.
    3777 Qualifying anything (``©short restrict rs©'') means pointer parameters of ©?++©, etc, would need restrict qualifiers.
     3843This gets into \lstinline$noalias$ territory.
     3844Qualifying anything (``\lstinline$short restrict rs$'') means pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers.
    37783845
    37793846Enumerated types.
     
    37853852Color, enum Color ) really make sense? ?++ does, but it adds (int)1.
    37863853
    3787 Operators on {,signed,unsigned} char and other small types. ©?<?© harmless;
     3854Operators on {,signed,unsigned} char and other small types. ?<? harmless;
    37883855?*? questionable for chars.
    37893856Generic selections make these choices visible.
    3790 Safe 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 
    3794 Don't use ©ptrdiff_t© by name in the predefineds.
     3857Safe 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
     3862Don't use ptrdiff\_t by name in the predefineds.
    37953863
    37963864Polymorphic objects.
  • doc/user/Makefile

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

    rf80e0218 r1b5c81ed  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Mon Jun 20 10:47:22 2016
    14 %% Update Count     : 575
     13%% Last Modified On : Sun Apr 10 22:50:15 2016
     14%% Update Count     : 72
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
    1717% requires tex packages: texlive-base texlive-latex-base tex-common texlive-humanities texlive-latex-extra texlive-fonts-recommended
    1818
    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 
     19\documentclass[openright,twoside]{article}
    2920%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3021
     
    3324\usepackage{textcomp}
    3425\usepackage[latin1]{inputenc}
    35 \usepackage{fullpage,times,comment}
    36 \usepackage{epic,eepic}
    37 \usepackage{upquote}                                                                    % switch curled `'" to straight
     26\usepackage{upquote}
     27\usepackage{fullpage,times}
    3828\usepackage{xspace}
    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
     29\usepackage{varioref}
     30\usepackage{listings}
     31\usepackage{footmisc}
     32\usepackage{comment}
     33\usepackage{latexsym}                                   % \Box
    4334\usepackage{mathptmx}                                   % better math font with "times"
    44 \usepackage[usenames]{color}
    4535\usepackage[pagewise]{lineno}
    4636\renewcommand{\linenumberfont}{\scriptsize\sffamily}
    47 \input{common}                                          % bespoke macros used in the document
    4837\usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}
    4938\usepackage{breakurl}
    5039\renewcommand{\UrlFont}{\small\sf}
    5140
    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 
    6341%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6442
     43% Bespoke macros used in the document.
     44\input{common}
     45
     46%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     47
    6548% Names used in the document.
    6649
    67 \newcommand{\Version}{1.0.0}
    6850\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}
    7751
    7852%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    8357
    8458%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     59
     60\begin{document}
     61\pagestyle{headings}
     62\linenumbers                                            % comment out to turn off line numbering
    8563
    8664\title{\Huge
     
    8967Version 1.0                                                     \\
    9068\vspace*{0.25in}
    91 \huge``describe not prescribe''
     69\huge``describe not prescribe''         \\
    9270\vspace*{1in}
    9371}% title
    94 
    9572\author{\huge
    96 Peter A. Buhr and ...
     73Peter A. Buhr and ...                           \\
    9774}% author
    98 
    9975\date{
    100 DRAFT \\ \today
     76DRAFT \\
     77\today
    10178}% date
    10279
    103 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    104 
    105 \begin{document}
    106 \pagestyle{headings}
    10780\pagenumbering{roman}
    108 \linenumbers                                            % comment out to turn off line numbering
     81\pagestyle{plain}
    10982
    11083\maketitle
     
    12497
    12598\clearpage
    126 \markright{\CFA User Manual}
    12799\pagenumbering{arabic}
    128100
     
    131103
    132104\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.
    133 The syntax of the \CFA language builds from C, and should look immediately familiar to C/\CC programmers.
     105The syntax of the \CFA language builds from C, and should look immediately familiar to C programmers.
    134106% Any language feature that is not described here can be assumed to be using the standard C11 syntax.
    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.
     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.
    136108Like C, \CFA is a statically typed, procedural language with a low-overhead runtime, meaning there is no global garbage-collection.
    137109The primary new features include parametric-polymorphism routines and types, exceptions, concurrency, and modules.
     
    144116New programs can be written in \CFA using a combination of C and \CFA features.
    145117\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.
    146 \CFA has 30 years of hindsight and a clean starting point.
     118\CFA has 30 years of hindsight and clean starting point.
    147119
    148120Like \CC, there may be both an old and new ways to achieve the same effect.
    149121For example, the following programs compare the \CFA and C I/O mechanisms.
    150122\begin{quote2}
    151 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    152 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     123\begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
     124\multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
    153125\begin{lstlisting}
    154126#include <fstream>
    155127int main( void ) {
    156128        int x = 0, y = 1, z = 2;
    157         ®sout | x | y | z | endl;®
     129        sout | x | y | z | endl;
    158130}
    159131\end{lstlisting}
     
    163135int main( void ) {
    164136        int x = 0, y = 1, z = 2;
    165         ®printf( "%d %d %d\n", x, y, z );®
     137        printf( "%d %d %d\n", x, y, z );
    166138}
    167139\end{lstlisting}
     
    169141\end{quote2}
    170142Both programs output the same result.
    171 While 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 
    173 This document is a user manual for the \CFA programming language, targeted at \CFA programmers.
     143While 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
     145This document is a reference manual for the \CFA programming language, targeted at \CFA programmers.
    174146Implementers may refer to the \CFA Programming Language Specification for details about the language syntax and semantics.
    175147In its current state, this document covers the intended core features of the language.
     
    180152\section{History}
    181153
    182 The \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.
     154The \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.
    183155(See~\cite{Werther96} for some similar work, but for \CC.)
    184156The 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.
    185157A 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.
    186 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.
     158As 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.
    187159
    188160
     
    190162
    191163Even 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.
    192 For system programming, where direct access to hardware and dealing with real-time issues is a requirement, C is usually the language of choice.
     164For systems programming, where direct access to hardware and dealing with real-time issues is a requirement, C is usually the language of choice.
    193165As well, there are millions of lines of C legacy code, forming the base for many software development projects (especially on UNIX systems).
    194166The 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\%.
    195 As 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@{}}
    199 Ranking & 2016  & 2011  & 2006  & 2001  & 1996  & 1991  & 1986          \\
    200 \hline
    201 Java    & 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}
    208167Hence, C is still an extremely important programming language, with double the usage of \CC, where \CC itself is largely C code.
    209168Finally, 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.
     
    212171The goal of this project is to engineer modern language features into C in an evolutionary rather than revolutionary way.
    213172\CC~\cite{c++,ANSI14:C++} is an example of a similar project;
    214 however, it largely extended the language, and did not address many existing problems.\footnote{%
    215 Two 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.}
    216 Fortran~\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.
     173however, it largely extended the language, and did not address existing problems.\footnote{%
     174Two 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.}
     175Fortran~\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.
    217176Java~\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.
    218177These languages have different syntax and semantics from C, and do not interoperate directly with C, largely because of garbage collection.
    219178As a result, there is a significant learning curve to move to these languages, and C legacy-code must be rewritten.
    220 These 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 
    222 The 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.
    223 Without significant extension to the C programming language, it is becoming unable to cope with the needs of modern programming problems and programmers;
     179These 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
     181The 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.
     182Without significant extension to the C programming language, C will be unable to cope with the needs of modern programming problems and programmers;
    224183as a result, it will fade into disuse.
    225184Considering the large body of existing C code and programmers, there is significant impetus to ensure C is transformed into a modern programming language.
     
    234193This feature allows users of \CFA to take advantage of the existing panoply of C libraries from inside their \CFA code.
    235194In 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.
    236 Language developers often state that adequate library support takes more work than designing and implementing the language itself.
     195Programming-language developers often state that adequate library support takes more work than designing and implementing the language itself.
    237196Like \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.
    238 Hence, \CFA begins by leveraging the large repository of C libraries with little cost.
    239197
    240198However, it is necessary to differentiate between C and \CFA code because of name overloading, as for \CC.
    241 For 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©.
    242 Whereas, \CFA wraps each of these routines into ones with the common name ©abs©:
     199For 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@.
     200Whereas, \CFA wraps each of these routines into one with the common name \lstinline@abs@.
    243201\begin{lstlisting}
    244202char abs( char );
    245203extern "C" {
    246 int abs( int );                                 // use default C routine for int
     204int abs( int );                         // use default C routine for int
    247205} // extern "C"
    248206long int abs( long int );
     
    255213long double _Complex abs( long double _Complex );
    256214\end{lstlisting}
    257 The problem is the name clash between the library routine ©abs© and the \CFA names ©abs©.
    258 Hence, names appearing in an ©extern "C"© block have \newterm{C linkage}.
     215The problem is the name clash between the library routine \lstinline@abs@ and the \CFA names \lstinline@abs@.
     216Hence, names appearing in an \lstinline@extern "C"@ block have \newterm{C linkage}.
    259217Then overloading polymorphism uses a mechanism called \newterm{name mangling} to create unique names that are different from C names, which are not mangled.
    260218Hence, 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.
    261219There is no way around this problem, other than C's approach of creating unique names for each pairing of operation and type.
    262220This example strongly illustrates a core idea in \CFA: \emph{the power of a name}.
    263 The name ``©abs©'' evokes the notion of absolute value, and many mathematical types provide the notion of absolute value.
    264 Hence, knowing the name ©abs© should be sufficient to apply it to any type where it is applicable.
     221The name ``\lstinline@abs@'' evokes the notion of absolute value, and many mathematical types provide the notion of absolute value.
     222Hence, knowing the name \lstinline@abs@ should be sufficient to apply it to any type where it is applicable.
    265223The time savings and safety of using one name uniformly versus $N$ unique names should not be underestimated.
    266224
    267225
    268 \section[Compiling CFA Program]{Compiling \CFA Program}
    269 
    270 The command ©cfa© is used to compile \CFA program(s), and is based on the GNU ©gcc©\index{gcc} command, e.g.:
    271 \begin{lstlisting}
    272 cfa§\indexc{cfa}\index{compilation!cfa@©cfa©}§ [ gcc-options ] C/§\CFA§-files [ assembler/loader-files ]
    273 \end{lstlisting}
    274 By default, \CFA programs having the following ©gcc© flags turned on:
     226\section{Compiling \CFA}
     227
     228The command \lstinline@cfa@ is used to compile \CFA program(s).
     229This command works like the GNU \lstinline@gcc@\index{gcc} command, e.g.:
     230\begin{lstlisting}
     231cfa [ gcc-options ] C/@{\CFA}@-files [ assembler/loader-files ]
     232\end{lstlisting}
     233By default, \CFA programs having the following \lstinline@gcc@ flags turned on:
    275234\begin{description}
    276 \item\hspace*{-0.6ex}\Indexc{-std=gnu99}\index{compilation option!-std=gnu99@{©-std=gnu99©}}
     235\item
     236\hspace*{-4pt}\lstinline@-std=gnu99@
    277237The 1999 C standard plus GNU extensions.
    278 \item\hspace*{-0.6ex}\Indexc{-fgnu89-¶inline¶}\index{compilation option!-fgnu89-inline@{©-fgnu89-¶inline¶©}}
    279 Use the traditional GNU semantics for inline routines in C99 mode, which allows inline routines in header files.
    280238\end{description}
    281239The following new \CFA option is available:
    282240\begin{description}
    283 \item\hspace*{-0.6ex}\Indexc{-CFA}\index{compilation option!-CFA@{©-CFA©}}
     241\item
     242\hspace*{-4pt}\lstinline@-CFA@
    284243Only 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.
    285244\end{description}
    286245
    287 The following preprocessor variables are available:
    288 \begin{description}
    289 \item\hspace*{-0.6ex}\Indexc{__CFA__}\index{preprocessor variables!__CFA__@{©__CFA__©}}
    290 is always available during preprocessing and its value is the current major \Index{version number} of \CFA.\footnote{
    291 The C preprocessor allows only integer values in a preprocessor variable so a value like ``\Version'' is not allowed.
    292 Hence, 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__©}}
    295 is 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__©}
    298 is 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__©}
    301 are always available during preprocessing and have no value.
    302 \end{description}
    303 
    304 These preprocessor variables allow conditional compilation of programs that must work differently in these situations.
    305 For 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}
    313 which conditionally includes the correct header file, if the program is compiled using ©gcc© or ©cfa©.
    314 
    315246
    316247\section{Underscores in Constants}
     
    318249Numeric constants are extended to allow \Index{underscore}s within constants\index{constant!underscore}, e.g.:
    319250\begin{lstlisting}
    320 2®_®147®_®483®_®648;                                    // decimal constant
    321 56_ul;                                                  // decimal unsigned long constant
    322 0_377;                                                  // octal constant
    323 0x_ff_ff;                                               // hexadecimal constant
    324 0x_ef3d_aa5c;                                   // hexadecimal constant
    325 3.141_592_654;                                  // floating point constant
    326 10_e_+1_00;                                             // floating point constant
    327 0x_ff_ff_p_3;                                   // hexadecimal floating point
    328 0x_1.ffff_ffff_p_128_l;                 // hexadecimal floating point long constant
    329 L_"\x_ff_ee";                                   // wide character constant
     2512`_`147`_`483`_`648;                            // decimal constant
     25256_ul;                                          // decimal unsigned long constant
     2530_377;                                          // octal constant
     2540x_ff_ff;                                       // hexadecimal constant
     2550x_ef3d_aa5c;                           // hexadecimal constant
     2563.141_592_654;                          // floating point constant
     25710_e_+1_00;                                     // floating point constant
     2580x_ff_ff_p_3;                           // hexadecimal floating point
     2590x_1.ffff_ffff_p_128_l;         // hexadecimal floating point long constant
     260L_"\x_ff_ee";                           // wide character constant
    330261\end{lstlisting}
    331262The rules for placement of underscores is as follows:
    332263\begin{enumerate}
    333264\item
    334 A sequence of underscores is disallowed, e.g., ©12__34© is invalid.
     265A sequence of underscores is disallowed, e.g., \lstinline@12__34@ is invalid.
    335266\item
    336267Underscores may only appear within a sequence of digits (regardless of the digit radix).
    337 In 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).
     268In 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).
    338269\item
    339270A numeric prefix may end with an underscore;
    340271a numeric infix may begin and/or end with an underscore;
    341272a numeric suffix may begin with an underscore.
    342 For example, the octal ©0© or hexadecimal ©0x© prefix may end with an underscore ©0_377© or ©0x_ff©;
    343 the exponent infix ©E© may start or end with an underscore ©1.0_E10©, ©1.0E_10© or ©1.0_E_10©;
    344 the type suffixes ©U©, ©L©, etc. may start with an underscore ©1_U©, ©1_ll© or ©1.0E10_f©.
     273For example, the octal \lstinline@0@ or hexadecimal \lstinline@0x@ prefix may end with an underscore \lstinline@0_377@ or \lstinline@0x_ff@;
     274the 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@;
     275the type suffixes \lstinline@U@, \lstinline@L@, etc. may start with an underscore \lstinline@1_U@, \lstinline@1_ll@ or \lstinline@1.0E10_f@.
    345276\end{enumerate}
    346277It 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).
    347 This extension is backwards compatible, matches with the use of underscore in variable names, and appears in Ada and Java 8.
     278This extension is backwards compatible, matches with the use of underscore in variable names, and appears in Ada and Java.
    348279
    349280
     
    353284C declaration syntax is notoriously confusing and error prone.
    354285For example, many C programmers are confused by a declaration as simple as:
    355 \begin{quote2}
    356 \begin{tabular}{@{}ll@{}}
    357 \begin{lstlisting}
    358 int *x[5]
    359 \end{lstlisting}
    360 &
    361 \raisebox{-0.75\totalheight}{\input{Cdecl}}
    362 \end{tabular}
    363 \end{quote2}
    364 Is this an array of 5 pointers to integers or a pointer to an array of 5 integers?
     286\begin{lstlisting}
     287int *x[ 10 ]
     288\end{lstlisting}
     289Is this a pointer to an array of 10 integers or an array of 10 pointers to integers?
    365290Another 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.
    366291For example, a routine returning a pointer to an array of integers is defined and used in the following way:
    367292\begin{lstlisting}
    368 int (*f())[5] {...};                    // definition mimics usage
    369 ... (*f())[3] += 1;
     293int (*f())[ 10 ] {...};
     294... (*f())[  3 ] += 1;  // definition mimics usage
    370295\end{lstlisting}
    371296Essentially, the return type is wrapped around the routine name in successive layers (like an onion).
    372297While attempting to make the two contexts consistent was a laudable goal, it has not worked out in practice.
    373298
    374 \CFA provides its own type, variable and routine declarations, using a different syntax.
    375 The new declarations place qualifiers to the left of the base type, while C declarations place qualifiers to the right of the base type.
    376 In the following example, \R{red} is for the base type and \B{blue} is for the qualifiers.
    377 The \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.
     299\CFA provides its own type, variable and routine declarations, using a slightly different syntax.
     300The new declarations place modifiers to the left of the base type, while C declarations place modifiers to the right of the base type.
     301The only exception is bit field specification, which always appear to the right of the base type.
     302C and the new \CFA declarations may appear together in the same program block, but cannot be mixed within a specific declaration.
     303
     304In \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.
     305However, 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.
     306For instance, variables \lstinline@x@ and \lstinline@y@ of type pointer to integer are defined in \CFA as follows:
    378307\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 )®;
     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;`
    385312\end{lstlisting}
    386313&
    387314\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}
    394 The only exception is bit field specification, which always appear to the right of the base type.
    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.
    396 However, unlike C, \CFA type declaration tokens are distributed across all variables in the declaration list.
    397 For instance, variables ©x© and ©y© of type pointer to integer are defined in \CFA as follows:
    398 \begin{quote2}
    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;
    403 \end{lstlisting}
    404 &
    405 \begin{lstlisting}
    406 int ®*®x, ®*®y;
     315int *x, *y;
    407316\end{lstlisting}
    408317\end{tabular}
     
    410319Other examples are:
    411320\begin{quote2}
    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;
     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;
    418327struct s {
    419328        int f0:3;
    420329        * int f1;
    421         [ 5 ] * int f2;
     330        [ 10 ] * int f2;
    422331};
    423332\end{lstlisting}
    424333&
    425334\begin{lstlisting}
    426 int z[ 5 ];
    427 char *w[ 5 ];
    428 double (*v)[ 5 ];
     335int z[ 10 ];
     336char *w[ 10 ];
     337double (*v)[ 10 ];
    429338struct s {
    430339        int f0:3;
    431340        int *f1;
    432         int *f2[ 5 ]
     341        int *f2[ 10 ]
    433342};
    434343\end{lstlisting}
    435344&
    436345\begin{lstlisting}
    437 // array of 5 integers
    438 // array of 5 pointers to char
    439 // pointer to array of 5 doubles
     346// array of 10 integers
     347// array of 10 pointers to char
     348// pointer to array of 10 doubles
    440349
    441350// common bit field syntax
     
    447356\end{quote2}
    448357
    449 All 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.:
     358All 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.:
    450359\begin{quote2}
    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}} \\
     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}}        \\
    453362\begin{lstlisting}
    454363const * const int x;
    455 const * [ 5 ] const int y;
     364const * [ 10 ] const int y;
    456365\end{lstlisting}
    457366&
    458367\begin{lstlisting}
    459368int const * const x;
    460 const int (* const y)[ 5 ]
     369const int (* const y)[ 10 ]
    461370\end{lstlisting}
    462371&
    463372\begin{lstlisting}
    464373// const pointer to const integer
    465 // const pointer to array of 5 const integers
     374// const pointer to array of 10 const integers
    466375\end{lstlisting}
    467376\end{tabular}
    468377\end{quote2}
    469 All 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}
     378All 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}
    470379The 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.:
    471380\begin{quote2}
    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}
    475 extern [ 5 ] int x;
     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}
     384extern [ 10 ] int x;
    476385static * const int y;
    477386\end{lstlisting}
    478387&
    479388\begin{lstlisting}
    480 int extern x[ 5 ];
     389int extern x[ 10 ];
    481390const int static *y;
    482391\end{lstlisting}
    483392&
    484393\begin{lstlisting}
    485 // externally visible array of 5 integers
     394// externally visible array of 10 integers
    486395// internally visible pointer to constant int
    487396\end{lstlisting}
     
    489398\end{quote2}
    490399
    491 Unsupported are K\&R C declarations where the base type defaults to ©int©, if no type is specified,\footnote{
    492 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}}
     400Unsupported are K\&R C declarations where the base type defaults to \lstinline@int@, if no type is specified\footnote{
     401At 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}},
    493402e.g.:
    494403\begin{lstlisting}
    495 x;                                                              // int x
    496 *y;                                                             // int *y
    497 f( p1, p2 );                                    // int f( int p1, int p2 );
    498 f( p1, p2 ) {}                                  // int f( int p1, int p2 ) {}
    499 \end{lstlisting}
    500 
    501 Finally, new \CFA declarations may appear together with C declarations in the same program block, but cannot be mixed within a specific declaration.
     404x;                                              // int x
     405*y;                                             // int *y
     406f( p1, p2 );                    // int f( int p1, int p2 );
     407f( p1, p2 ) {}                  // int f( int p1, int p2 ) {}
     408\end{lstlisting}
     409
     410As stated above, the two styles of declaration may appear together in the same block.
    502411Therefore, a programmer has the option of either continuing to use traditional C declarations or take advantage of the new style.
    503412Clearly, both styles need to be supported for some time due to existing C-style header-files, particularly for UNIX systems.
    504413
    505414
    506 \section{Reference Pointers}
    507 
    508 Program variables are implicit pointers to memory locations generated by the compiler and automatically dereferenced, as in:
     415\section{Type Operators}
     416
     417The new declaration syntax can be used in other contexts where types are required, e.g., casts and the pseudo-routine \lstinline@sizeof@:
    509418\begin{quote2}
    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}
    514 int x, y;
    515 x = 3;
    516 y = x;
     419\begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
     420\multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
     421\begin{lstlisting}
     422y = (* int)x;
     423i = sizeof([ 10 ] * int);
    517424\end{lstlisting}
    518425&
    519426\begin{lstlisting}
    520 int * const x = (int *)100, * const y = (int *)104;
    521 *x = 3;         // implicit dereference
    522 *y = *x;
     427y = (int *)x;
     428i = sizeof(int *[ 10 ]);
    523429\end{lstlisting}
    524430\end{tabular}
    525431\end{quote2}
    526 A variable name only points to one location during its lifetime, i.e., it is a \Index{non-mutable} pointer.
    527 For example, the variables ©x© and ©y© are constant pointers.
    528 Variable addresses are usually not stored in memory and loaded before dereferencing;
    529 instead, 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}
    533 x = x + 1
    534 &x = *(&x) + 1
    535 (100) = *(100) + 1
    536 \end{lstlisting}
    537 &
    538 \begin{lstlisting}
    539 ld              r1,(100)                        // address of x
    540 add             r1,1
    541 st              r1,(100)                        // address of x
    542 \end{lstlisting}
    543 \end{tabular}
    544 \end{quote2}
    545 Finally, the non-mutable nature of variables and the fact that there is no storage for a variable address means pointer assignment is impossible.
    546 Therefore, 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 
    548 A 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).
    549 Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, e.g.:
    550 \begin{lstlisting}
    551 int x, y, z, ®*® p1, ®*® p2;
    552 p1 = ®&®x;                                      // p1 points to x
    553 p2 = p1;                                        // p2 also points to x
    554 p1 = ®&®y;                                      // p1 points to y
    555 p2 = p1 + 1;                            // p2 points to z, pointer arithmetic
    556 \end{lstlisting}
    557 In many cases, a pointer name is anonymous (dynamically computed), so it cannot be stored directly in an instruction like a variable name.
    558 
    559 Pointers have a duality: an address in memory or the value at that address.
    560 In many cases, the compiler can infer which of these operations are needed:
    561 \begin{lstlisting}
    562 p2 = p1 + x;                            // compiler infers *p2 = *p1 + x;
    563 \end{lstlisting}
    564 because adding the integer value of ©x© to the address of ©p1© and storing the resulting address into ©p2© is an unlikely operation.
    565 Algol68~\cite{Algol68} inferences pointer dereferencing to select the best meaning for each pointer usage.
    566 However, there are ambiguous cases, especially when pointer arithmetic is possible, as in C:
    567 \begin{lstlisting}
    568 p1 = p2;                                        // p1 = p2 or *p1 = *p2
    569 p1 = p1 + 1;                            // p1 = p1 + 1 or *p1 = *p1 + 1
    570 \end{lstlisting}
    571 
    572 Most programming languages pick a default operation and supply an explicit operation to resolve the pointer-duality ambiguity.
    573 In C, the default operation for pointers is manipulate the pointer value and the pointed-to value is explicitly accessed by dereferencing ©*©.
    574 \begin{lstlisting}
    575 p1 = p2;                                        // pointer value assignment
    576 *p1 = *p1 + 1;                          // pointed-to value assignment/operation
    577 \end{lstlisting}
    578 which 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 
    580 However, 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}
    584 And, it is tedious and error prone to explicitly write the dereferencing, especially when pointer arithmetic with integer values is allowed.
    585 It is better to have the compiler generate the dereferencing:
    586 \begin{lstlisting}
    587 p2 = ((p1 + p2) * (p2 - p1)) / (p1 - p2);
    588 \end{lstlisting}
    589 
    590 To 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}
    592 int x, y, z, ®&® r1, ®&® r2;    // & denotes reference pointer
    593 r1 ®:=® &x;                                     // r1 points to x
    594 r2 ®:=® &r1;                                    // r2 also points to x
    595 r1 ®:=® &y;                                     // r1 points to y
    596 r2 ®:=® &r1 + 1;                                // r2 points to z
    597 r2 = ((r1 + r2) * (r2 - r1)) / (r1 - r2); // implicit dereferencing
    598 \end{lstlisting}
    599 Hence, 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.
    600 Notice, the explicit operator ©:=© to denote pointer assignment to a reference pointer to support both aspects of pointer duality.
    601 Note, \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 
    603 Like pointers, it is possible to use ©const© qualifiers with a reference:
    604 \begin{lstlisting}
    605 const int cx = 5;                       // cannot change cx;
    606 const int & r3 = &cx;           // cannot change what r3 is pointing to
    607 r3 ®:=® &cx;                                    // can change r3
    608 r3 = 7;                                         // error, cannot change cx
    609 int & const r4 = &x;            // must be initialized, §\CC§ reference
    610 r4 ®:=® &x;                                     // error, cannot change r4
    611 const int & const r5 = &cx;     // must be initialized, §\CC§ reference
    612 r5 = 7;                                         // error, cannot change cx
    613 r5 ®:=® &cx;                                    // error, cannot change r5
    614 \end{lstlisting}
    615 Note, for type ©& const©, there is no pointer assignment, so ©r4 := &x© is disallowed, and the pointer value cannot be ©0©.
    616 Since 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
    619 it in impossible to take the address of ©r4© as it always means the address of what ©r4© is pointing to.
    620 \item
    621 the dereference at initialization is optional because there can only be one
    622 \begin{lrbox}{\LstBox}%
    623 \footnotesize%
    624 \begin{lstlisting}%
    625 void f( int p ) {...}
    626 void (*fp)( int ) = &f;         // equivalent initialization
    627 void (*fp)( int ) = f;          // missing dereference allowed
    628 \end{lstlisting}%
    629 \end{lrbox}%
    630 meaning.\footnote{
    631 This 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}
    636 int & const r4 = &x;            // equivalent initialization
    637 int & const r4 = x;                     // missing dereference allowed
    638 \end{lstlisting}
    639 \end{itemize}
    640 Similarly, when a ©const© reference is used for a parameters type, the call-site argument does not require a reference.
    641 \begin{lstlisting}
    642 void f( int & ri, int & const cri );
    643 f( &x, x );                                     // reference not required for second argument
    644 \end{lstlisting}
    645 Within routine ©f©, it is possible to change an argument by changing the corresponding parameter, and parameter ©ri© can be locally reassigned within ©f©.
    646 
    647 Finally, when a reference parameter has a ©const© value, it is possible to pass literals and expressions.
    648 \begin{lstlisting}
    649 void g( const int & ri, const int & const cri );
    650 f( &3, 3 );
    651 f( &(x + y), x + y );
    652 \end{lstlisting}
    653 At the call site, the compiler implicitly creates the necessary temporary that is subsequently pointed to by the reference parameter.
    654 Hence, changing the parameter only changes the temporary at the call site.
    655 For 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 
    659 The 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}
    664 y = (®* int®)x;
    665 i = sizeof(®[ 5 ] * int®);
    666 \end{lstlisting}
    667 &
    668 \begin{lstlisting}
    669 y = (®int *®)x;
    670 i = sizeof(®int *[ 5 ]®);
    671 \end{lstlisting}
    672 \end{tabular}
    673 \end{quote2}
    674432
    675433
     
    677435
    678436\CFA also supports a new syntax for routine definition, as well as ISO C and K\&R routine syntax.
    679 The 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}
    685 where routine ©f© has three output (return values) and three input parameters.
     437The 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}
     443where routine \lstinline@f@ has three output (return values) and three input parameters.
    686444Existing C syntax cannot be extended with multiple return types because it is impossible to embed a single routine name within multiple return type specifications.
    687445
    688 In 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{
     446In 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{
    689447Michael Tiemann, with help from Doug Lea, provided named return values in g++, circa 1989.}
    690448The value of each local return variable is automatically returned at routine termination.
    691449Declaration qualifiers can only appear at the start of a routine definition, e.g.:
    692450\begin{lstlisting}
    693 ®extern® [ int x ] g( int y ) {§\,§}
     451extern [ int x ] g( int y ) {@\,@}
    694452\end{lstlisting}
    695453Lastly, if there are no output parameters or input parameters, the brackets and/or parentheses must still be specified;
    696454in 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:
    697455\begin{lstlisting}
    698 [§\,§] g();                                                     // no input or output parameters
    699 [ void ] g( void );                             // no input or output parameters
     456[@\,@] g(@\,@);                         // no input or output parameters
     457[ void ] g( void );                     // no input or output parameters
    700458\end{lstlisting}
    701459
     
    704462[ i, j, ch ] = f( 3, 'a', ch );
    705463\end{lstlisting}
    706 The 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.
     464The 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.
    707465
    708466\CFA style declarations cannot be used to declare parameters for K\&R style routine definitions because of the following ambiguity:
    709467\begin{lstlisting}
    710 int (*f(x))[ 5 ] int x; {}
    711 \end{lstlisting}
    712 The 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.
    713 Since the strings overlap starting with the open bracket, ©[©, there is an ambiguous interpretation for the string.
     468int (*f(x))[ 10 ] int x; {}
     469\end{lstlisting}
     470The 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.
     471Since the strings overlap starting with the open bracket, \lstinline@[@, there is an ambiguous interpretation for the string.
    714472As well, \CFA-style declarations cannot be used to declare parameters for C-style routine-definitions because of the following ambiguity:
    715473\begin{lstlisting}
    716474typedef int foo;
    717 int f( int (* foo) );                   // foo is redefined as a parameter name
    718 \end{lstlisting}
    719 The 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.
    720 The 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.
     475int f( int (* foo) );           // foo is redefined as a parameter name
     476\end{lstlisting}
     477The 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.
     478The 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.
    721479The 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.
    722480
    723481C-style declarations can be used to declare parameters for \CFA style routine definitions, e.g.:
    724482\begin{lstlisting}
    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
     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
    727485\end{lstlisting}
    728486The 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:
    729487\begin{lstlisting}
    730488#define ptoa( n, d ) int (*n)[ d ]
    731 int f( ptoa( p, 5 ) ) ...               // expands to int f( int (*p)[ 5 ] )
    732 [ int ] f( ptoa( p, 5 ) ) ...   // expands to [ int ] f( int (*p)[ 5 ] )
     489int f( ptoa(p,10) ) ...         // expands to int f( int (*p)[ 10 ] )
     490[ int ] f( ptoa(p,10) ) ...     // expands to [ int ] f( int (*p)[ 10 ] )
    733491\end{lstlisting}
    734492Again, programmers are highly encouraged to use one declaration form or the other, rather than mixing the forms.
    735493
    736494
    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:
     495\subsection{Returning Values}
     496
     497Named 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:
    740498\begin{lstlisting}
    741499int f() {
     
    745503}
    746504\end{lstlisting}
    747 Because 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
    759 When the return is encountered, the current values of ©x© and ©y© are returned to the calling routine.
    760 As 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}
    766 In this case, the current values of ©x© and ©y© are returned to the calling routine just as if a ©return© had been encountered.
     505Because 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}
     512When the return is encountered, the current value of \lstinline@x@ is returned to the calling routine.
     513As 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}
     519In this case, the current value of \lstinline@x@ is returned to the calling routine just as if a \lstinline@return@ had been encountered.
    767520
    768521
     
    772525as well, parameter names are optional, e.g.:
    773526\begin{lstlisting}
    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
     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
    778531\end{lstlisting}
    779532This syntax allows a prototype declaration to be created by cutting and pasting source text from the routine definition header (or vice versa).
    780533It 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.:
    781534\begin{quote2}
    782 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    783 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     535\begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
     536\multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
    784537\begin{lstlisting}
    785538[ int ] f(int), g;
     
    810563for example, the following is incorrect:
    811564\begin{lstlisting}
    812 * [ int x ] f () fp;                    // routine name "f" is not allowed
     565* [ int x ] f () fp;            // routine name "f" is not allowed
    813566\end{lstlisting}
    814567
     
    943696While in theory default arguments can be simulated with overloading, as in:
    944697\begin{quote2}
    945 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    946 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{default arguments}}   & \multicolumn{1}{c}{\textbf{overloading}}      \\
     698\begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
     699\multicolumn{1}{c@{\hspace{30pt}}}{\textbf{default arguments}}  & \multicolumn{1}{c}{\textbf{overloading}}      \\
    947700\begin{lstlisting}
    948701void p( int x, int y = 2, int z = 3 ) {...}
     
    977730\subsection{Type Nesting}
    978731
    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}}    \\
     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}}    \\
    983736\hline
    984737\begin{lstlisting}
     
    1032785
    1033786int fred() {
    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;
     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;
    1038791}
    1039792\end{lstlisting}
    1040793\end{tabular}
    1041 \caption{Type Nesting / Qualification}
    1042 \label{f:TypeNestingQualification}
    1043 \end{figure}
    1044 In the left example in C, types ©C©, ©U© and ©T© are implicitly hoisted outside of type ©S© into the containing block scope.
    1045 In 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 ``©::©''.
     794\end{quote2}
     795In 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.
     796In 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@::@''.
    1046797
    1047798
     
    1056807which can be used to sort in ascending and descending order by locally redefining the less-than operator into greater-than.
    1057808\begin{lstlisting}
    1058 const unsigned int size = 5;
     809const unsigned int size = 10;
    1059810int ia[size];
    1060811...                                             // assign values to array ia
    1061812qsort( ia, size );              // sort ascending order using builtin ?<?
    1062813{
    1063         ®int ?<?( int x, int y ) { return x > y; }® // nested routine
     814        `int ?<?( int x, int y ) { return x > y; }` // nested routine
    1064815        qsort( ia, size );      // sort descending order by local redefinition
    1065816}
     
    1068819Nested routines are not first-class, meaning a nested routine cannot be returned if it has references to variables in its enclosing blocks;
    1069820the only exception is references to the external block of the translation unit, as these variables persist for the duration of the program.
    1070 The following program in undefined in \CFA (and ©gcc©\index{gcc})
     821The following program in undefined in \CFA (and \lstinline@gcc@\index{gcc})
    1071822\begin{lstlisting}
    1072823[* [int]( int )] foo() {                // int (*foo())( int )
    1073         int ®i® = 7;
     824        int `i` = 7;
    1074825        int bar( int p ) {
    1075                 ®i® += 1;                                       // dependent on local variable
    1076                 sout | ®i® | endl;
     826                `i` += 1;                                       // dependent on local variable
     827                sout | `i` | endl;
    1077828        }
    1078829        return bar;                                     // undefined because of local dependence
     
    1088839
    1089840
    1090 \section{Lexical List}
     841\section{Tuples}
    1091842
    1092843In C and \CFA, lists of elements appear in several contexts, such as the parameter list for a routine call.
    1093844(More contexts are added shortly.)
    1094 A list of such elements is called a \newterm{lexical list}.
    1095 The general syntax of a lexical list is:
    1096 \begin{lstlisting}
    1097 [ §\emph{exprlist}§ ]
    1098 \end{lstlisting}
    1099 where ©$\emph{exprlist}$© is a list of one or more expressions separated by commas.
    1100 The brackets, ©[]©, allow differentiating between lexical lists and expressions containing the C comma operator.
    1101 The following are examples of lexical lists:
     845A list of such elements is called a tuple.
     846The general syntax of a tuple is:
     847\begin{lstlisting}
     848[ $\emph{exprlist}$ ]
     849\end{lstlisting}
     850where \lstinline@$\emph{exprlist}$@ is a list of one or more expressions separated by commas.
     851The brackets, \lstinline$[]$, allow differentiating between tuples and expressions containing the C comma operator.
     852The following are examples of tuples:
    1102853\begin{lstlisting}
    1103854[ x, y, z ]
     
    1105856[ v+w, x*y, 3.14159, f() ]
    1106857\end{lstlisting}
    1107 Tuples 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.
     858Tuples 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.
    1108859Note, a tuple is not a record (structure);
    1109860a record denotes a single value with substructure, whereas a tuple is multiple values with no substructure (see flattening coercion in Section 12.1).
     
    1115866The general syntax of a tuple type is:
    1116867\begin{lstlisting}
    1117 [ §\emph{typelist}§ ]
    1118 \end{lstlisting}
    1119 where ©$\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.
     868[ @\emph{typelist}@ ]
     869\end{lstlisting}
     870where \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.
    1120871Examples of tuple types include:
    1121872\begin{lstlisting}
     
    1123874[ double, double, double ]
    1124875[ * int, int * ]                // mix of CFA and ANSI
    1125 [ * [ 5 ] int, * * char, * [ [ int, int ] ] (int, int) ]
    1126 \end{lstlisting}
    1127 Like 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.
     876[ * [ 10 ] int, * * char, * [ [ int, int ] ] (int, int) ]
     877\end{lstlisting}
     878Like 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.
    1128879
    1129880Examples of declarations using tuple types are:
     
    1161912tuple does not have structure like a record; a tuple is simply converted into a list of components.
    1162913\begin{rationale}
    1163 The 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.
     914The 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.
    1164915Using a temporary variable to store the  results of the inner routine and then passing this variable to the outer routine works, however.
    1165916\end{rationale}
     
    1190941\begin{rationale}
    1191942Unfortunately, C's syntax for subscripts precluded treating them as tuples.
    1192 The C subscript list has the form ©[i][j]...© and not ©[i, j, ...]©.
    1193 Therefore, 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.
    1194 Fixing 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.
     943The C subscript list has the form \lstinline@[i][j]...@ and not \lstinline@i, j, ...]@.
     944Therefore, 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.
     945Fixing 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.
    1195946\end{rationale}
    1196947
     
    1211962[ a, b, c, d ] = w
    1212963\end{lstlisting}
    1213 ©w© is implicitly opened to yield a tuple of four values, which are then assigned individually.
     964\lstinline@w@ is implicitly opened to yield a tuple of four values, which are then assigned individually.
    1214965
    1215966A \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:
     
    1219970First the right-hand tuple is flattened and then the values are assigned individually.
    1220971Flattening is also performed on tuple types.
    1221 For example, the type ©[ int, [ int, int ], int ]© can be coerced, using flattening, into the type ©[ int, int, int, int ]©.
     972For example, the type \lstinline@[ int, [ int, int ], int ]@ can be coerced, using flattening, into the type \lstinline@[ int, int, int, int ]@.
    1222973
    1223974A \newterm{structuring coercion} is the opposite of flattening;
    1224975a tuple is structured into a more complex nested tuple.
    1225 For 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 ]©.
     976For 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 ]@.
    1226977In the following example, the last assignment illustrates all the tuple coercions:
    1227978\begin{lstlisting}
     
    1231982\end{lstlisting}
    1232983Starting on the right-hand tuple in the last assignment statement, w is opened, producing a tuple of four values;
    1233 therefore, the right-hand tuple is now the tuple ©[ [ 1, 2, 3, 4 ], 5 ]©.
    1234 This 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.
    1235 The tuple ©[ 2, 3, 4, 5 ]© is then closed to create a tuple value.
    1236 Finally, ©x© is assigned ©1© and ©w© is assigned the tuple value using multiple assignment (see Section 14).
     984therefore, the right-hand tuple is now the tuple \lstinline@[ [ 1, 2, 3, 4 ], 5 ]@.
     985This 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.
     986The tuple \lstinline@[ 2, 3, 4, 5 ]@ is then closed to create a tuple value.
     987Finally, \lstinline@x@ is assigned \lstinline@1@ and \lstinline@w@ is assigned the tuple value using multiple assignment (see Section 14).
    1237988\begin{rationale}
    1238989A possible additional language extension is to use the structuring coercion for tuples to initialize a complex record with a tuple.
     
    1245996Mass assignment has the following form:
    1246997\begin{lstlisting}
    1247 [ §\emph{lvalue}§, ..., §\emph{lvalue}§ ] = §\emph{expr}§;
    1248 \end{lstlisting}
    1249 The 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.
     998[ @\emph{lvalue}@, ..., @\emph{lvalue}@ ] = @\emph{expr}@;
     999\end{lstlisting}
     1000The 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.
    12511002Clearly, the types of the entities being assigned must be type compatible with the value of the expression.
    12521003
     
    12741025*a1 = t; *a2 = t; *a3 = t;
    12751026\end{lstlisting}
    1276 The temporary ©t© is necessary to store the value of the expression to eliminate conversion issues.
     1027The temporary \lstinline@t@ is necessary to store the value of the expression to eliminate conversion issues.
    12771028The temporaries for the addresses are needed so that locations on the left-hand side do not change as the values are assigned.
    1278 In this case, ©y[i]© uses the previous value of ©i© and not the new value set at the beginning of the mass assignment.
     1029In 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.
    12791030
    12801031
     
    12841035Multiple assignment has the following form:
    12851036\begin{lstlisting}
    1286 [ §\emph{lvalue}§, . . ., §\emph{lvalue}§ ] = [ §\emph{expr}§, . . ., §\emph{expr}§ ];
    1287 \end{lstlisting}
    1288 The left-hand side is a tuple of \emph{lvalues}, and the right-hand side is a tuple of \emph{expr}s.
    1289 Each \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.
     1037[ @\emph{lvalue}@, . . ., @\emph{lvalue}@ ] = [ @\emph{expr}@, . . ., @\emph{expr}@ ];
     1038\end{lstlisting}
     1039The left-hand side is a tuple of \lstinline@$\emph{lvalues}$@, and the right-hand side is a tuple of \lstinline@$\emph{expr}$@s.
     1040Each \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.
    12901041An example of multiple assignment is:
    12911042\begin{lstlisting}
    12921043[ x, y, z ] = [ 1, 2, 3 ];
    12931044\end{lstlisting}
    1294 Here, the values ©1©, ©2© and ©3© are assigned, respectively, to the variables ©x©, ©y© and ©z©.
     1045Here, the values \lstinline@1@, \lstinline@2@ and \lstinline@3@ are assigned, respectively, to the variables \lstinline@x@, \lstinline@y@ and \lstinline@z@.
    12951046 A more complex example is:
    12961047\begin{lstlisting}
    12971048[ i, y[ i ], z ] = [ 1, i, a + b ];
    12981049\end{lstlisting}
    1299 Here, the values ©1©, ©i© and ©a + b© are assigned to the variables ©i©, ©y[i]© and ©z©, respectively.
     1050Here, the values \lstinline@1@, \lstinline@i@ and \lstinline@a + b@ are assigned to the variables \lstinline@i@, \lstinline@y[i]@ and \lstinline@z@, respectively.
    13001051 Note, the parallel semantics of
    13011052multiple assignment ensures:
     
    13031054[ x, y ] = [ y, x ];
    13041055\end{lstlisting}
    1305 correctly interchanges (swaps) the values stored in ©x© and ©y©.
     1056correctly interchanges (swaps) the values stored in \lstinline@x@ and \lstinline@y@.
    13061057The following cases are errors:
    13071058\begin{lstlisting}
     
    13241075Cascade assignment has the following form:
    13251076\begin{lstlisting}
    1326 §\emph{tuple}§ = §\emph{tuple}§ = ... = §\emph{tuple}§;
     1077@\emph{tuple}@ = @\emph{tuple}@ = ... = @\emph{tuple}@;
    13271078\end{lstlisting}
    13281079and it has the same parallel semantics as for mass and multiple assignment.
     
    13421093Its general form is:
    13431094\begin{lstlisting}
    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©.
    1348 Each element of \emph{ fieldlist} is an element of the record specified by \emph{expr}.
     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@.
     1099Each element of \lstinline@$\emph{ fieldlist}$@ is an element of the record specified by \lstinline@$\emph{expr}$@.
    13491100A record-field tuple may be used anywhere a tuple can be used. An example of the use of a record-field tuple is
    13501101the following:
     
    13611112also, it is unnecessary to specify all the fields of a struct in a multiple record-field tuple.
    13621113
    1363 If 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:
     1114If 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:
    13641115\begin{lstlisting}
    13651116struct inner {
     
    13781129\section{Labelled Break/Continue}
    13791130
    1380 While C provides ©break© and ©continue© statements for altering control flow, both are restricted to one level of nesting for a particular control structure.
    1381 Unfortunately, this restriction forces programmers to use ©goto© to achieve the equivalent for more than one level of nesting.
    1382 To 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.
    1384 The 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.
    1386 The 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
     1131While 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.
     1132Unfortunately, this restriction forces programmers to use \lstinline@goto@ to achieve the equivalent for more than one level of nesting.
     1133To 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}.
     1134For 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
    13991145                }
    14001146        }
     
    14081154                        ... goto L1; ...
    14091155                        ... goto L2; ...
    1410                         ... goto L3; // or break 
     1156                        ... goto L3; // or break
    14111157                } L3: ;
    14121158        } L2: ;
     
    14141160\end{lstlisting}
    14151161\end{tabular}
    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
     1162\end{quote2}
     1163The inner most loop has three exit points, which cause termination of one or more of the three nested loops, respectively.
     1164For 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`; ...
    14301175
    14311176                }
     
    14421187                        ... goto L1; ...
    14431188                        ... goto L2; ...
    1444                         ... goto L3; // or continue
     1189                        ... goto L3; ...
    14451190                  L3: ;
    14461191                }
     
    14511196\end{lstlisting}
    14521197\end{tabular}
    1453 \caption{Labelled Continue}
    1454 \label{f:LabelledContinue}
    1455 \end{figure}
    1456 
    1457 For both ©break© and ©continue©, the target label must be directly associated with a ©for©, ©while© or ©do© statement;
    1458 for ©break©, the target label can also be associated with a ©switch© statement.
    1459 Both ©break© and ©continue© with target labels are simply a ©goto© restricted in the following ways:
     1198\end{quote2}
     1199The inner most loop has three restart points, which cause the next loop iteration to begin, respectively.
     1200For both \lstinline@break@ and \lstinline@continue@, the target label must be directly associated with a \lstinline@for@, \lstinline@while@ or \lstinline@do@ statement;
     1201for \lstinline@break@, the target label can also be associated with a \lstinline@switch@ statement.
     1202Both \lstinline@break@ and \lstinline@continue@ with target labels are simply a \lstinline@goto@ restricted in the following ways:
    14601203\begin{itemize}
    14611204\item
     
    14661209Since they always transfers out of containing control structures, they cannot be used to branch into a control structure.
    14671210\end{itemize}
    1468 The 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.
     1211The 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.
    14691212Furthermore, 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.
    1470 With ©goto©, the label at the end of the control structure fails to convey this important clue early enough to the reader.
     1213With \lstinline@goto@, the label at the end of the control structure fails to convey this important clue early enough to the reader.
    14711214Finally, 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.
    1472 The implicit targets of the current ©break© and ©continue©, i.e., the closest enclosing loop or ©switch©, change as certain constructs are added or removed.
     1215The 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.
    14731216
    14741217
    14751218\section{Switch Statement}
    14761219
    1477 C allows a number of questionable forms for the ©switch© statement:
     1220C allows a number of questionable forms for the \lstinline@switch@ statement:
    14781221\begin{enumerate}
    14791222\item
    1480 By default, the end of a ©case© clause\footnote{
    1481 In 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;
    1483 to exit a ©switch© statement from a ©case© clause requires explicitly terminating the clause with a transfer statement, most commonly ©break©, as in:
     1223By default, the end of a \lstinline@case@ clause\footnote{
     1224In 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;
     1226to 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:
    14841227\begin{lstlisting}
    14851228switch ( i ) {
     
    15061249\end{lstlisting}
    15071250In this example, case 2 is always done if case 3 is done.
    1508 This 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.
     1251This 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.
    15091252C also uses fall-through to handle multiple case-values resulting in the same action, as in:
    15101253\begin{lstlisting}
     
    15191262\end{lstlisting}
    15201263However, this situation is handled in other languages without fall-through by allowing a list of case values.
    1521 While 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.
    1522 Hence, ©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
    1525 It is possible to place ©case© clauses on statements nested \emph{within} the body of the ©switch© statement, as in:
     1264While 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.
     1265Hence, \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
     1268It is possible to place \lstinline@case@ clauses on statements nested \emph{within} the body of the \lstinline@switch@ statement, as in:
    15261269\begin{lstlisting}
    15271270switch ( i ) {
     
    15641307}
    15651308\end{lstlisting}
    1566 which unrolls a loop N times (N = 8 above) and uses the ©switch© statement to deal with any iterations not a multiple of N.
     1309which unrolls a loop N times (N = 8 above) and uses the \lstinline@switch@ statement to deal with any iterations not a multiple of N.
    15671310While efficient, this sort of special purpose usage is questionable:
    15681311\begin{quote}
     
    15711314\end{quote}
    15721315\item
    1573 It is possible to place the ©default© clause anywhere in the list of labelled clauses for a ©switch© statement, rather than only at the end.
    1574 Virtually all programming languages with a ©switch© statement require the ©default© clause to appear last in the case-clause list.
    1575 The logic for this semantics is that after checking all the ©case© clauses without success, the ©default© clause is selected;
    1576 hence, physically placing the ©default© clause at the end of the ©case© clause list matches with this semantics.
    1577 This 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
    1580 It is possible to place unreachable code at the start of a ©switch© statement, as in:
     1316It 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.
     1317Virtually all programming languages with a \lstinline@switch@ statement require the \lstinline@default@ clause to appear last in the case-clause list.
     1318The logic for this semantics is that after checking all the \lstinline@case@ clauses without success, the \lstinline@default@ clause is selected;
     1319hence, physically placing the \lstinline@default@ clause at the end of the \lstinline@case@ clause list matches with this semantics.
     1320This 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
     1323It is possible to place unreachable code at the start of a \lstinline@switch@ statement, as in:
    15811324\begin{lstlisting}
    15821325switch ( x ) {
     
    15881331}
    15891332\end{lstlisting}
    1590 While 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.
    1591 Furthermore, 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©.
     1333While 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.
     1334Furthermore, 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@.
    15921335As mentioned, transfer into control structures should be forbidden.
    1593 Transfers from within the ©switch© body using a ©goto© are equally unpalatable.
     1336Transfers from within the \lstinline@switch@ body using a \lstinline@goto@ are equally unpalatable.
    15941337\end{enumerate}
    15951338Before discussing potential language changes to deal with these problems, it is worth observing that in a typical C program:
    15961339\begin{itemize}
    15971340\item
    1598 the number of ©switch© statements is small,
    1599 \item
    1600 most ©switch© statements are well formed (i.e., no Duff's device),
    1601 \item
    1602 the ©default© clause is usually written as the last case-clause,
    1603 \item
    1604 and 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.
     1341the number of \lstinline@switch@ statements is small,
     1342\item
     1343most \lstinline@switch@ statements are well formed (i.e., no Duff's device),
     1344\item
     1345the \lstinline@default@ clause is usually written as the last case-clause,
     1346\item
     1347and 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.
    16051348\end{itemize}
    16061349These observations should help to put the effects of suggested changes into perspective.
     
    16081351\begin{enumerate}
    16091352\item
    1610 Eliminating the ©default© fall-through problem has the greatest potential for affecting existing code.
    1611 However, 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.
    1612 In 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.:
     1353Eliminating the \lstinline@default@ fall-through problem has the greatest potential for affecting existing code.
     1354However, 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.
     1355In 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.:
    16131356\begin{lstlisting}
    16141357case 1:  case 2:  case 3: ...
    16151358\end{lstlisting}
    16161359Nevertheless, reversing the default action would have a non-trivial effect on case actions that compound, such as the above example of processing shell arguments.
    1617 Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no fall-through semantics.
    1618 The ©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).
     1360Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of \lstinline@switch@ statement, called \lstinline@choose@, with no fall-through semantics.
     1361The \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).
    16191362It is still possible to fall-through if a case-clause ends with the new keyword fallthru, e.g.:
    16201363\begin{lstlisting}
     
    16321375\item
    16331376Eliminating Duff's device is straightforward and only invalidates a small amount of very questionable code.
    1634 The 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
    1636 The 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.
     1377The 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
     1379The 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.
    16371380Therefore, no language change is made for this issue.
    16381381\item
    1639 Dealing 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.
     1382Dealing 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.
    16401383This semantics is the same as for declarations at the start of a loop body, which are executed before each iteration of the loop body.
    1641 As well, this grammar does not allow statements to appear before the first ©case© clause.
     1384As well, this grammar does not allow statements to appear before the first \lstinline@case@ clause.
    16421385The change is compatible for declarations with initialization in this context because existing code cannot assume the initialization has occurred.
    16431386The change is incompatible for statements, but any existing code using it is highly questionable, as in:
     
    16491392}
    16501393\end{lstlisting}
    1651 The statement after the ©switch© can never be executed unless it is labelled.
    1652 If it is labelled, it must be transfered to from outside or inside the ©switch© statement, neither of which is acceptable control flow.
     1394The statement after the \lstinline@switch@ can never be executed unless it is labelled.
     1395If it is labelled, it must be transfered to from outside or inside the \lstinline@switch@ statement, neither of which is acceptable control flow.
    16531396\end{enumerate}
    16541397
     
    16561399\section{Case Clause}
    16571400
    1658 C restricts the ©case© clause of a ©switch© statement to a single value.
    1659 For multiple ©case© clauses associated with the same statement, it is necessary to have multiple ©case© clauses rather than multiple values.
    1660 Requiring a ©case© clause for each value does not seem to be in the spirit of brevity normally associated with C.
    1661 Therefore, the ©case© clause is extended with a list of values, as in:
     1401C restricts the \lstinline@case@ clause of a \lstinline@switch@ statement to a single value.
     1402For multiple \lstinline@case@ clauses associated with the same statement, it is necessary to have multiple \lstinline@case@ clauses rather than multiple values.
     1403Requiring a \lstinline@case@ clause for each value does not seem to be in the spirit of brevity normally associated with C.
     1404Therefore, the \lstinline@case@ clause is extended with a list of values, as in:
    16621405\begin{quote2}
    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}} \\
     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}}        \\
    16651408\begin{lstlisting}
    16661409switch ( i ) {
    1667   ®case 1, 3, 5®:
     1410  `case 1, 3, 5`:
    16681411        ...
    1669   ®case 2, 4, 6®:
     1412  `case 2, 4, 6`:
    16701413        ...
    16711414}
     
    16931436In addition, two forms of subranges are allowed to specify case values: the GNU C form and a new \CFA form.
    16941437\begin{quote2}
    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}}     \\
     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}}    \\
    16971440\begin{lstlisting}
    16981441switch ( i ) {
    1699   ®case 1~5:®
     1442  `case 1~5:`
    17001443        ...
    1701   ®case 10~15:®
     1444  `case 10~15:`
    17021445        ...
    17031446}
     
    19541697
    19551698The syntax for using references in \CFA is the same as \CC with the exception of reference initialization.
    1956 Use ©&© to specify a reference, and access references just like regular objects, not like pointers (use dot notation to access fields).
     1699Use \lstinline@&@ to specify a reference, and access references just like regular objects, not like pointers (use dot notation to access fields).
    19571700When initializing a reference, \CFA uses a different syntax which differentiates reference initialization from assignment to a reference.
    1958 The ©&© 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.
     1701The \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.
    19591702
    19601703\begin{figure}
     
    20291772In \CFA, as in C, all scalar types can be incremented and
    20301773decremented, which is defined in terms of adding or subtracting 1.
    2031 The 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)©).
     1774The 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)@).
    20321775
    20331776In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to any
     
    20381781polymorphic parameters, and user-defined pointer-like types may need a null value.
    20391782Defining special
    2040 constants for a user-defined type is more efficient than defining a conversion to the type from ©_Bool©.
     1783constants for a user-defined type is more efficient than defining a conversion to the type from \lstinline@_Bool@.
    20411784
    20421785Why just 0 and 1? Why not other integers? No other integers have special status in C.
     
    21211864\begin{tabular}[t]{ll}
    21221865%identifier & operation \\ \hline
    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{?/?}\\
     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{?/?}\\
    21361879\end{tabular}\hfil
    21371880\begin{tabular}[t]{ll}
    21381881%identifier & operation \\ \hline
    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{?&?}\\
     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{?&?}\\
    21511894\end{tabular}\hfil
    21521895\begin{tabular}[t]{ll}
    21531896%identifier & operation \\ \hline
    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{?"|=?}\\
     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{?"|=?}\\
    21671910\end{tabular}
    21681911\hfil
     
    21731916These identifiers are defined such that the question marks in the name identify the location of the operands.
    21741917These operands represent the parameters to the functions, and define how the operands are mapped to the function call.
    2175 For example, ©a + b© becomes ©?+?(a, b)©.
     1918For example, \lstinline@a + b@ becomes \lstinline@?+?(a, b)@.
    21761919
    21771920In the example below, a new type, myComplex, is defined with an overloaded constructor, + operator, and string operator.
     
    22151958Auto type-inferencing occurs in a declaration where a variable's type is inferred from its initialization expression type.
    22161959\begin{quote2}
    2217 \begin{tabular}{@{}l@{\hspace{3em}}ll@{}}
    2218 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CC}} & \multicolumn{1}{c}{©gcc©}\index{gcc} \\
     1960\begin{tabular}{@{}l@{\hspace{30pt}}ll@{}}
     1961\multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CC}}        & \multicolumn{1}{c}{\lstinline@gcc@}\index{gcc} \\
    22191962\begin{lstlisting}
    22201963
     
    22471990\end{itemize}
    22481991
    2249 In \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.
     1992In \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.
    22511994\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.
    22521995Only for overloaded routines with the same return type is variable type-inferencing possible.
    2253 Finally, ©auto© presents the programming problem of tracking down a type when the type is actually needed.
     1996Finally, \lstinline@auto@ presents the programming problem of tracking down a type when the type is actually needed.
    22541997For example, given
    22551998\begin{lstlisting}
    2256 auto j = ®...®
    2257 \end{lstlisting}
    2258 and the need to write a routine to compute using ©j©
    2259 \begin{lstlisting}
    2260 void rtn( ®...® parm );
     1999auto j = `...`
     2000\end{lstlisting}
     2001and the need to write a routine to compute using \lstinline@j@
     2002\begin{lstlisting}
     2003void rtn( `...` parm );
    22612004rtn( j );
    22622005\end{lstlisting}
    2263 A programmer must work backwards to determine the type of ©j©'s initialization expression, reconstructing the possibly long generic type-name.
     2006A programmer must work backwards to determine the type of \lstinline@j@'s initialization expression, reconstructing the possibly long generic type-name.
    22642007In this situation, having the type name or a short alias is very useful.
    22652008
     
    22692012At some point, a programmer wants the type of the variable to remain constant and the expression to be in error when it changes.
    22702013
    2271 Given ©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.
     2014Given \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.
    22722015Should a significant need arise, this feature can be revisited.
    22732016
     
    24732216
    24742217        try {
    2475                 throw 13;
     2218        throw 13;
    24762219        }
    24772220        catch(int e) {
    2478                 printf(.caught an exception: %d\n., e);
     2221        printf(.caught an exception: %d\n., e);
    24792222        }
    24802223\end{lstlisting}
     
    25712314} s;
    25722315\end{lstlisting}
    2573 The problem occurs in accesing these fields using the selection operation ``©.©'':
     2316The problem occurs in accesing these fields using the selection operation ``\lstinline@.@'':
    25742317\begin{lstlisting}
    25752318s.0 = 0;        // ambiguity with floating constant .0
     
    25782321To make this work, a space is required after the field selection:
    25792322\begin{lstlisting}
    2580 ®s.§\textvisiblespace§0® = 0;
    2581 ®s.§\textvisiblespace§1® = 1;
     2323`s.@\textvisiblespace@0` = 0;
     2324`s.@\textvisiblespace@1` = 1;
    25822325\end{lstlisting}
    25832326While this sytact is awkward, it is unlikely many programers will name fields of a structure 0 or 1.
    2584 Like 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 
    2586 There are several ambiguous cases with operator identifiers, e.g., ©int *?*?()©, where the string ©*?*?© can be lexed as ©*©/©?*?© or ©*?©/©*?©.
    2587 Since 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.
     2327Like 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
     2329There are several ambiguous cases with operator identifiers, e.g., \lstinline@int *?*?()@, where the string \lstinline@*?*?@ can be lexed as \lstinline@*@/\lstinline@?*?@ or \lstinline@*?@/\lstinline@*?@.
     2330Since 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.
    25882331Even with this special hack, there are 5 general cases that cannot be handled.
    2589 The first case is for the function-call identifier ©?()©:
    2590 \begin{lstlisting}
    2591 int *§\textvisiblespace§?()();  // declaration: space required after '*'
    2592 *§\textvisiblespace§?()();              // expression: space required after '*'
    2593 \end{lstlisting}
    2594 Without the space, the string ©*?()© is ambiguous without N character look ahead;
    2595 it requires scanning ahead to determine if there is a ©'('©, which is the start of an argument/parameter list.
     2332The first case is for the function-call identifier \lstinline@?()@:
     2333\begin{lstlisting}
     2334int *@\textvisiblespace@?()();  // declaration: space required after '*'
     2335*@\textvisiblespace@?()();              // expression: space required after '*'
     2336\end{lstlisting}
     2337Without the space, the string \lstinline@*?()@ is ambiguous without N character look ahead;
     2338it requires scanning ahead to determine if there is a \lstinline@'('@, which is the start of an argument/parameter list.
    25962339
    25972340The 4 remaining cases occur in expressions:
    25982341\begin{lstlisting}
    2599 i++§\textvisiblespace§?i:0;             // space required before '?'
    2600 i--§\textvisiblespace§?i:0;             // space required before '?'
    2601 i§\textvisiblespace§?++i:0;             // space required after '?'
    2602 i§\textvisiblespace§?--i:0;             // space required after '?'
    2603 \end{lstlisting}
    2604 In the first two cases, the string ©i++?© is ambiguous, where this string can be lexed as ©i© / ©++?© or ©i++© / ©?©;
    2605 it requires scanning ahead to determine if there is a ©'('©, which is the start of an argument list.
    2606 In the second two cases, the string ©?++x© is ambiguous, where this string can be lexed as ©?++© / ©x© or ©?© / y©++x©;
    2607 it requires scanning ahead to determine if there is a ©'('©, which is the start of an argument list.
     2342i++@\textvisiblespace@?i:0;             // space required before '?'
     2343i--@\textvisiblespace@?i:0;             // space required before '?'
     2344i@\textvisiblespace@?++i:0;             // space required after '?'
     2345i@\textvisiblespace@?--i:0;             // space required after '?'
     2346\end{lstlisting}
     2347In the first two cases, the string \lstinline@i++?@ is ambiguous, where this string can be lexed as \lstinline@i@ / \lstinline@++?@ or \lstinline@i++@ / \lstinline@?@;
     2348it requires scanning ahead to determine if there is a \lstinline@'('@, which is the start of an argument list.
     2349In 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@;
     2350it requires scanning ahead to determine if there is a \lstinline@'('@, which is the start of an argument list.
    26082351
    26092352
     
    35313274
    35323275
    3533 \subsection[Comparing Key Features of CFA]{Comparing Key Features of \CFA}
     3276\subsection{Comparing Key Features of \CFA}
    35343277
    35353278
     
    35443287\begin{lstlisting}
    35453288struct Line {
    3546         float lnth;
     3289        float length;
    35473290}
    35483291// default constructor
    35493292void ?{}( Line * l ) {
    3550         l->lnth = 0.0;
    35513293        sout | "default" | endl;
     3294        l.length = 0.0;
    35523295}
    35533296
    35543297
    35553298// constructor with length
    3556 void ?{}( Line * l, float lnth ) {
    3557         l->lnth = lnth;
    3558         sout | "lnth" | l->lnth | endl;
    3559 
     3299void ?{}( Line * l, float length ) {
     3300        sout | "length" | length | endl;
     3301
     3302        l.length = length;
    35603303}
    35613304
    35623305// destructor
    3563 void ^?() {
     3306void ^?(Line &l) {
    35643307        sout | "destroyed" | endl;
    3565         l.lnth = 0.0;
     3308        l.length = 0.0;
    35663309}
    35673310
    35683311// usage
    35693312Line line1;
    3570 Line line2 = { 3.4 };
     3313Line line2{ 3.4 };
    35713314\end{lstlisting}
    35723315&
    35733316\begin{lstlisting}[language=C++]
    35743317class Line {
    3575         float lnth;
     3318        float length;
    35763319
    35773320        // default constructor
    35783321        Line() {
    35793322                cout << "default" << endl;
    3580                 lnth = 0.0;
    3581         }
    3582 
    3583 
    3584         // constructor with lnth
     3323                length = 0.0;
     3324        }
     3325
     3326
     3327        // constructor with length
    35853328        Line( float l ) {
    35863329                cout << "length " << length
     
    39053648
    39063649\begin{comment}
    3907 \subsubsection{Modules / Packages}
     3650\subsubsection{Modules/Packages}
    39083651
    39093652\begin{lstlisting}
     
    41473890
    41483891
    4149 \subsubsection[C++]{\CC}
     3892\subsubsection{\CC}
    41503893
    41513894\CC is a general-purpose programming language.
     
    42213964\begin{enumerate}
    42223965\item
    4223 Change type of character literal ©int© to ©char©.
     3966Change type of character literal \lstinline@int@ to \lstinline@char@.
    42243967This change allows overloading differentiation argument type matching, e.g.:
    42253968\begin{lstlisting}
     
    42383981
    42393982\item
    4240 Change: String literals made ©const© \\
    4241 The type of a string literal is changed from ©array of char© to ©array of const char©.
    4242 The type of a wide string literal is changed from ©array of wchar_t© to ©array of const wchar_t©. \\
     3983Change: String literals made \lstinline@const@ \\
     3984The type of a string literal is changed from \lstinline@array of char@ to \lstinline@array of const char@.
     3985The type of a wide string literal is changed from \lstinline@array of wchar_t@ to \lstinline@array of const wchar_t@. \\
    42433986Rationale: This avoids calling an inappropriate overloaded function, which might expect to be able to modify its argument.
    42443987Effect on original feature: Change to semantics of well-defined feature. \\
    4245 Difficulty of converting: Simple syntactic transformation, because string literals can be converted to ©char*;© (4.2).
     3988Difficulty of converting: Simple syntactic transformation, because string literals can be converted to \lstinline@char*;@ (4.2).
    42463989The most common cases are handled by a new but deprecated standard conversion:
    42473990\begin{lstlisting}
     
    42824025
    42834026\CFA is C \emph{incompatible} on this issue, and provides semantics similar to \CC.
    4284 Nested types are not hoisted and can be referenced using the field selection operator ``©.©'', unlike the \CC scope-resolution operator ``©::©''.
     4027Nested types are not hoisted and can be referenced using the field selection operator ``\lstinline@.@'', unlike the \CC scope-resolution operator ``\lstinline@::@''.
    42854028Given 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
    42864030
    42874031\item
     
    42954039struct Y yy; // valid C, invalid C++
    42964040\end{lstlisting}
    4297 Rationale: C++ classes have member functions which require that classes establish scopes.
    4298 The 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.
    4299 Effect on original feature: Change of semantics of welldefined feature.
    4300 Difficulty 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:
     4041Rationale: C++ classes have member functions which require that classes establish scopes. The C rule
     4042would leave classes as an incomplete scope mechanism which would prevent C++ programmers from maintaining
     4043locality within a class. A coherent set of scope rules for C++ based on the C rule would be very
     4044complicated and C++ programmers would be unable to predict reliably the meanings of nontrivial examples
     4045involving nested or local functions.
     4046Effect on original feature: Change of semantics of welldefined
     4047feature.
     4048Difficulty of converting: Semantic transformation. To make the struct type name visible in the scope of
     4049the enclosing struct, the struct tag could be declared in the scope of the enclosing struct, before the enclosing
     4050struct is defined. Example:
    43014051\begin{lstlisting}
    43024052struct Y; // struct Y and struct X are at the same scope
     
    43054055};
    43064056\end{lstlisting}
    4307 All 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.
    4308 Note: this is a consequence of the difference in scope rules, which is documented in 3.3.
     4057All the definitions of C struct types enclosed in other struct definitions and accessed outside the scope of
     4058the enclosing struct could be exported to the scope of the enclosing struct. Note: this is a consequence of
     4059the difference in scope rules, which is documented in 3.3.
    43094060How widely used: Seldom.
    43104061\end{enumerate}
     
    43184069The general case is printing out a sequence of variables separated by whitespace.
    43194070\begin{quote2}
    4320 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    4321 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{\CC}}      \\
     4071\begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
     4072\multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{\CC}}      \\
    43224073\begin{lstlisting}
    43234074int x = 0, y = 1, z = 2;
    4324 ®sout® ®|® x ®|® y ®|® z ®| endl®;
     4075`sout` `|` x `|` y `|` z `| endl`;
    43254076\end{lstlisting}
    43264077&
     
    43314082\end{tabular}
    43324083\end{quote2}
    4333 The \CFA form is half as many characters, and is similar to \Index{Python} I/O with respect to implicit separators.
     4084The \CFA form is half as many characters, and is similar to Python I/O with respect to implicit separators.
    43344085
    43354086The logical-or operator is used because it is the lowest-priority overloadable operator, other than assignment.
     
    43584109A seperator does not appear at the start or end of a line.
    43594110\begin{lstlisting}[belowskip=0pt]
    4360 sout | 1 | 2 | 3 | endl;
     4111sout 1 | 2 | 3 | endl;
    43614112\end{lstlisting}
    43624113\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    43774128which is a local mechanism to disable insertion of the separator character.
    43784129\item
    4379 A seperator does not appear before a C string starting with the (extended) \Index{ASCII}\index{ASCII!extended} characters: \lstinline[mathescape=off]@([{$£¥¡¿«@
     4130A seperator does not appear before a C string starting with the \Index{extended ASCII}\index{ASCII} characters: \lstinline[mathescape=off]@([{$£¥¿«@
    43804131%$
    43814132\begin{lstlisting}[mathescape=off]
    4382 sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¡" | 7 | "x ¿" | 8 | "x «" | 9 | endl;
     4133sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¿" | 7 | "x «" | 8 | endl;
    43834134\end{lstlisting}
    43844135%$
    43854136\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    4386 x (1 x [2 x {3 x $4 x £5 x ¥6 x ¡7 x ¿8 x «9
     4137x (1 x [2 x {3 x $4 x £5 x ¥6 x ¿7 x «8
    43874138\end{lstlisting}
    43884139%$
    43894140\item
    4390 A seperator does not appear after a C string ending with the (extended) \Index{ASCII}\index{ASCII!extended} characters: ©,.:;!?)]}%¢»©
     4141A seperator does not appear after a C string ending with the extended ASCII characters: \lstinline@,.:;!?)]}%¢»@
    43914142\begin{lstlisting}[belowskip=0pt]
    43924143sout | 1 | ", x" | 2 | ". x" | 3 | ": x" | 4 | "; x" | 5 | "! x" | 6 | "? x" | 7 | ") x" | 8 | "] x" | 9 | "} x"
    4393          | 10 | "% x" | 11 | "¢ x" | 12 | "» x" | endl;
     4144         | 10 | "% x" | 11 | L"¢ x" | 12 | L"» x" | endl;
    43944145\end{lstlisting}
    43954146\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    43974148\end{lstlisting}
    43984149\item
    4399 A 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@
     4150A seperator does not appear before or after a C string begining/ending with the characters: \lstinline@\f\n\r\t\v\`'"@
    44004151\begin{lstlisting}[belowskip=0pt]
    4401 sout | "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]
    4404 x`1`x'2'x"3"x x 4 x x   1       x
     4152sout | "x '" | 1 | "' x \`" | 2 | "\` x \"" | 3 | "\" x" | endl;
     4153\end{lstlisting}
     4154\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     4155x '1' x \`2\` x "3" x
     4156\end{lstlisting}
     4157\begin{lstlisting}[showtabs=true,aboveskip=0pt]
     4158sout | "x\t" | 1 | "\tx" | endl;
     4159x       1       x
    44054160\end{lstlisting}
    44064161\end{enumerate}
     
    44344189\end{lstlisting}
    44354190\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    4436  1 2 3
     41911 2 3
    44374192\end{lstlisting}
    44384193\begin{lstlisting}[mathescape=off,aboveskip=0pt,aboveskip=0pt,belowskip=0pt]
     
    44454200\end{lstlisting}
    44464201%$
    4447 \begin{comment}
     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]
    44484206#include <fstream>
    44494207
    44504208int main() {
    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 %$
     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
     4252A 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
     4254A
     42551 2 3 4 5 6 7 8
     42561.1 1.2 1.3
     42571.1+2.3i 1.1-2.3i 1.1-2.3i
     4258
     42591.11.21.3
     42601.1+2.3i1.1-2.3i1.1-2.3i
     4261 abcxyz
     4262abcxyz
     4263
     42641.1, $1.2, $1.3
     42651.1+2.3i, $1.1-2.3i, $1.1-2.3i
     4266abc, $xyz
     4267\end{lstlisting}
     4268\caption{Example I/O}
     4269\label{f:ExampleIO}
     4270\end{figure}
    44754271
    44764272
     
    44844280
    44854281\begin{lstlisting}
    4486 forall( otype T ) T * malloc( void );§\indexc{malloc}§
     4282forall( otype T ) T * malloc( void );
    44874283forall( otype T ) T * malloc( char fill );
    44884284forall( otype T ) T * malloc( T * ptr, size_t size );
    44894285forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill );
    4490 forall( otype T ) T * calloc( size_t nmemb );§\indexc{calloc}§
    4491 forall( otype T ) T * realloc( T * ptr, size_t size );§\indexc{ato}§
     4286forall( otype T ) T * calloc( size_t size );
     4287forall( otype T ) T * realloc( T * ptr, size_t size );
    44924288forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill );
    44934289
    4494 forall( otype T ) T * aligned_alloc( size_t alignment );§\indexc{ato}§
     4290forall( otype T ) T * aligned_alloc( size_t alignment );
    44954291forall( otype T ) T * memalign( size_t alignment );             // deprecated
    44964292forall( otype T ) int posix_memalign( T ** ptr, size_t alignment );
     
    45014297
    45024298
    4503 \subsection{ato / strto}
    4504 
    4505 \begin{lstlisting}
    4506 int ato( const char * ptr );§\indexc{ato}§
     4299\subsection{ato/strto}
     4300
     4301\begin{lstlisting}
     4302int ato( const char * ptr );
    45074303unsigned int ato( const char * ptr );
    45084304long int ato( const char * ptr );
     
    45324328
    45334329
    4534 \subsection{bsearch / qsort}
     4330\subsection{bsearch/qsort}
    45354331
    45364332\begin{lstlisting}
    45374333forall( otype T | { int ?<?( T, T ); } )
    4538 T * bsearch( const T key, const T * arr, size_t dimension );§\indexc{bsearch}§
     4334T * bsearch( const T key, const T * arr, size_t dimension );
    45394335
    45404336forall( otype T | { int ?<?( T, T ); } )
    4541 void qsort( const T * arr, size_t dimension );§\indexc{qsort}§
     4337void qsort( const T * arr, size_t dimension );
    45424338\end{lstlisting}
    45434339
     
    45464342
    45474343\begin{lstlisting}
    4548 char abs( char );§\indexc{abs}§
    4549 int abs( int );
     4344char abs( char );
     4345extern "C" {
     4346int abs( int );                         // use default C routine for int
     4347} // extern "C"
    45504348long int abs( long int );
    45514349long long int abs( long long int );
     
    45534351double abs( double );
    45544352long double abs( long double );
    4555 float abs( float _Complex );
    4556 double abs( double _Complex );
    4557 long double abs( long double _Complex );
     4353float _Complex abs( float _Complex );
     4354double _Complex abs( double _Complex );
     4355long double _Complex abs( long double _Complex );
     4356\end{lstlisting}
     4357
     4358
     4359\subsection{floor/ceil}
     4360
     4361\begin{lstlisting}
     4362float floor( float );
     4363extern "C" {
     4364double floor( double );         // use C routine for double
     4365} // extern "C"
     4366long double floor( long double );
     4367
     4368float ceil( float );
     4369extern "C" {
     4370double ceil( double );          // use C routine for double
     4371} // extern "C"
     4372long double ceil( long double );
    45584373\end{lstlisting}
    45594374
     
    45624377
    45634378\begin{lstlisting}
    4564 void rand48seed( long int s );§\indexc{rand48seed}§
    4565 char rand48();§\indexc{rand48}§
     4379void rand48seed( long int s );
     4380char rand48();
    45664381int rand48();
    45674382unsigned int rand48();
     
    45764391
    45774392
    4578 \subsection{min / max / swap}
     4393\subsection{min/max/swap}
    45794394
    45804395\begin{lstlisting}
    45814396forall( otype T | { int ?<?( T, T ); } )
    4582 T min( const T t1, const T t2 );§\indexc{min}§
     4397T min( const T t1, const T t2 );
    45834398
    45844399forall( otype T | { int ?>?( T, T ); } )
    4585 T max( const T t1, const T t2 );§\indexc{max}§
     4400T max( const T t1, const T t2 );
    45864401
    45874402forall( otype T )
    4588 void swap( T * t1, T * t2 );§\indexc{swap}§
    4589 \end{lstlisting}
    4590 
    4591 
    4592 \section{Math Library}
    4593 \label{s:Math Library}
    4594 
    4595 The 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}
    4601 float fabs( float );§\indexc{fabs}§
    4602 double fabs( double );
    4603 long double fabs( long double );
    4604 float cabs( float _Complex );
    4605 double cabs( double _Complex );
    4606 long double cabs( long double _Complex );
    4607 
    4608 float ?%?( float, float );§\indexc{fmod}§
    4609 float fmod( float, float );
    4610 double ?%?( double, double );
    4611 double fmod( double, double );
    4612 long double ?%?( long double, long double );
    4613 long double fmod( long double, long double );
    4614 
    4615 float remainder( float, float );§\indexc{remainder}§
    4616 double remainder( double, double );
    4617 long double remainder( long double, long double );
    4618 
    4619 [ int, float ] remquo( float, float );§\indexc{remquo}§
    4620 float remquo( float, float, int * );
    4621 [ int, double ] remquo( double, double );
    4622 double remquo( double, double, int * );
    4623 [ int, long double ] remquo( long double, long double );
    4624 long double remquo( long double, long double, int * );
    4625 
    4626 [ int, float ] div( float, float );                                             // alternative name for remquo
    4627 float div( float, float, int * );§\indexc{div}§
    4628 [ int, double ] div( double, double );
    4629 double div( double, double, int * );
    4630 [ int, long double ] div( long double, long double );
    4631 long double div( long double, long double, int * );
    4632 
    4633 float fma( float, float, float );§\indexc{fma}§
    4634 double fma( double, double, double );
    4635 long double fma( long double, long double, long double );
    4636 
    4637 float fdim( float, float );§\indexc{fdim}§
    4638 double fdim( double, double );
    4639 long double fdim( long double, long double );
    4640 
    4641 float nan( const char * );§\indexc{nan}§
    4642 double nan( const char * );
    4643 long double nan( const char * );
    4644 \end{lstlisting}
    4645 
    4646 
    4647 \subsection{Exponential}
    4648 
    4649 \begin{lstlisting}
    4650 float exp( float );§\indexc{exp}§
    4651 double exp( double );
    4652 long double exp( long double );
    4653 float _Complex exp( float _Complex );
    4654 double _Complex exp( double _Complex );
    4655 long double _Complex exp( long double _Complex );
    4656 
    4657 float exp2( float );§\indexc{exp2}§
    4658 double exp2( double );
    4659 long double exp2( long double );
    4660 float _Complex exp2( float _Complex );
    4661 double _Complex exp2( double _Complex );
    4662 long double _Complex exp2( long double _Complex );
    4663 
    4664 float expm1( float );§\indexc{expm1}§
    4665 double expm1( double );
    4666 long double expm1( long double );
    4667 
    4668 float log( float );§\indexc{log}§
    4669 double log( double );
    4670 long double log( long double );
    4671 float _Complex log( float _Complex );
    4672 double _Complex log( double _Complex );
    4673 long double _Complex log( long double _Complex );
    4674 
    4675 float log2( float );§\indexc{log2}§
    4676 double log2( double );
    4677 long double log2( long double );
    4678 float _Complex log2( float _Complex );
    4679 double _Complex log2( double _Complex );
    4680 long double _Complex log2( long double _Complex );
    4681 
    4682 float log10( float );§\indexc{log10}§
    4683 double log10( double );
    4684 long double log10( long double );
    4685 float _Complex log10( float _Complex );
    4686 double _Complex log10( double _Complex );
    4687 long double _Complex log10( long double _Complex );
    4688 
    4689 float log1p( float );§\indexc{log1p}§
    4690 double log1p( double );
    4691 long double log1p( long double );
    4692 
    4693 int ilogb( float );§\indexc{ilogb}§
    4694 int ilogb( double );
    4695 int ilogb( long double );
    4696 
    4697 float logb( float );§\indexc{logb}§
    4698 double logb( double );
    4699 long double logb( long double );
    4700 \end{lstlisting}
    4701 
    4702 
    4703 \subsection{Power}
    4704 
    4705 \begin{lstlisting}
    4706 float sqrt( float );§\indexc{sqrt}§
    4707 double sqrt( double );
    4708 long double sqrt( long double );
    4709 float _Complex sqrt( float _Complex );
    4710 double _Complex sqrt( double _Complex );
    4711 long double _Complex sqrt( long double _Complex );
    4712 
    4713 float cbrt( float );§\indexc{cbrt}§
    4714 double cbrt( double );
    4715 long double cbrt( long double );
    4716 
    4717 float hypot( float, float );§\indexc{hypot}§
    4718 double hypot( double, double );
    4719 long double hypot( long double, long double );
    4720 
    4721 float pow( float, float );§\indexc{pow}§
    4722 double pow( double, double );
    4723 long double pow( long double, long double );
    4724 float _Complex pow( float _Complex, float _Complex );
    4725 double _Complex pow( double _Complex, double _Complex );
    4726 long double _Complex pow( long double _Complex, long double _Complex );
    4727 \end{lstlisting}
    4728 
    4729 
    4730 \subsection{Trigonometric}
    4731 
    4732 \begin{lstlisting}
    4733 float sin( float );§\indexc{sin}§
    4734 double sin( double );
    4735 long double sin( long double );
    4736 float _Complex sin( float _Complex );
    4737 double _Complex sin( double _Complex );
    4738 long double _Complex sin( long double _Complex );
    4739 
    4740 float cos( float );§\indexc{cos}§
    4741 double cos( double );
    4742 long double cos( long double );
    4743 float _Complex cos( float _Complex );
    4744 double _Complex cos( double _Complex );
    4745 long double _Complex cos( long double _Complex );
    4746 
    4747 float tan( float );§\indexc{tan}§
    4748 double tan( double );
    4749 long double tan( long double );
    4750 float _Complex tan( float _Complex );
    4751 double _Complex tan( double _Complex );
    4752 long double _Complex tan( long double _Complex );
    4753 
    4754 float asin( float );§\indexc{asin}§
    4755 double asin( double );
    4756 long double asin( long double );
    4757 float _Complex asin( float _Complex );
    4758 double _Complex asin( double _Complex );
    4759 long double _Complex asin( long double _Complex );
    4760 
    4761 float acos( float );§\indexc{acos}§
    4762 double acos( double );
    4763 long double acos( long double );
    4764 float _Complex acos( float _Complex );
    4765 double _Complex acos( double _Complex );
    4766 long double _Complex acos( long double _Complex );
    4767 
    4768 float atan( float );§\indexc{atan}§
    4769 double atan( double );
    4770 long double atan( long double );
    4771 float _Complex atan( float _Complex );
    4772 double _Complex atan( double _Complex );
    4773 long double _Complex atan( long double _Complex );
    4774 
    4775 float atan2( float, float );§\indexc{atan2}§
    4776 double atan2( double, double );
    4777 long double atan2( long double, long double );
    4778 
    4779 float atan( float, float );                                                             // alternative name for atan2
    4780 double atan( double, double );§\indexc{atan}§
    4781 long double atan( long double, long double );
    4782 \end{lstlisting}
    4783 
    4784 
    4785 \subsection{Hyperbolic}
    4786 
    4787 \begin{lstlisting}
    4788 float sinh( float );§\indexc{sinh}§
    4789 double sinh( double );
    4790 long double sinh( long double );
    4791 float _Complex sinh( float _Complex );
    4792 double _Complex sinh( double _Complex );
    4793 long double _Complex sinh( long double _Complex );
    4794 
    4795 float cosh( float );§\indexc{cosh}§
    4796 double cosh( double );
    4797 long double cosh( long double );
    4798 float _Complex cosh( float _Complex );
    4799 double _Complex cosh( double _Complex );
    4800 long double _Complex cosh( long double _Complex );
    4801 
    4802 float tanh( float );§\indexc{tanh}§
    4803 double tanh( double );
    4804 long double tanh( long double );
    4805 float _Complex tanh( float _Complex );
    4806 double _Complex tanh( double _Complex );
    4807 long double _Complex tanh( long double _Complex );
    4808 
    4809 float asinh( float );§\indexc{asinh}§
    4810 double asinh( double );
    4811 long double asinh( long double );
    4812 float _Complex asinh( float _Complex );
    4813 double _Complex asinh( double _Complex );
    4814 long double _Complex asinh( long double _Complex );
    4815 
    4816 float acosh( float );§\indexc{acosh}§
    4817 double acosh( double );
    4818 long double acosh( long double );
    4819 float _Complex acosh( float _Complex );
    4820 double _Complex acosh( double _Complex );
    4821 long double _Complex acosh( long double _Complex );
    4822 
    4823 float atanh( float );§\indexc{atanh}§
    4824 double atanh( double );
    4825 long double atanh( long double );
    4826 float _Complex atanh( float _Complex );
    4827 double _Complex atanh( double _Complex );
    4828 long double _Complex atanh( long double _Complex );
    4829 \end{lstlisting}
    4830 
    4831 
    4832 \subsection{Error / Gamma}
    4833 
    4834 \begin{lstlisting}
    4835 float erf( float );§\indexc{erf}§
    4836 double erf( double );
    4837 long double erf( long double );
    4838 float _Complex erf( float _Complex );
    4839 double _Complex erf( double _Complex );
    4840 long double _Complex erf( long double _Complex );
    4841 
    4842 float erfc( float );§\indexc{erfc}§
    4843 double erfc( double );
    4844 long double erfc( long double );
    4845 float _Complex erfc( float _Complex );
    4846 double _Complex erfc( double _Complex );
    4847 long double _Complex erfc( long double _Complex );
    4848 
    4849 float lgamma( float );§\indexc{lgamma}§
    4850 double lgamma( double );
    4851 long double lgamma( long double );
    4852 float lgamma( float, int * );
    4853 double lgamma( double, int * );
    4854 long double lgamma( long double, int * );
    4855 
    4856 float tgamma( float );§\indexc{tgamma}§
    4857 double tgamma( double );
    4858 long double tgamma( long double );
    4859 \end{lstlisting}
    4860 
    4861 
    4862 \subsection{Nearest Integer}
    4863 
    4864 \begin{lstlisting}
    4865 float floor( float );§\indexc{floor}§
    4866 double floor( double );
    4867 long double floor( long double );
    4868 
    4869 float ceil( float );§\indexc{ceil}§
    4870 double ceil( double );
    4871 long double ceil( long double );
    4872 
    4873 float trunc( float );§\indexc{trunc}§
    4874 double trunc( double );
    4875 long double trunc( long double );
    4876 
    4877 float rint( float );§\indexc{rint}§
    4878 long double rint( long double );
    4879 long int rint( float );
    4880 long int rint( double );
    4881 long int rint( long double );
    4882 long long int rint( float );
    4883 long long int rint( double );
    4884 long long int rint( long double );
    4885 
    4886 long int lrint( float );§\indexc{lrint}§
    4887 long int lrint( double );
    4888 long int lrint( long double );
    4889 long long int llrint( float );
    4890 long long int llrint( double );
    4891 long long int llrint( long double );
    4892 
    4893 float nearbyint( float );§\indexc{nearbyint}§
    4894 double nearbyint( double );
    4895 long double nearbyint( long double );
    4896 
    4897 float round( float );§\indexc{round}§
    4898 long double round( long double );
    4899 long int round( float );
    4900 long int round( double );
    4901 long int round( long double );
    4902 long long int round( float );
    4903 long long int round( double );
    4904 long long int round( long double );
    4905 
    4906 long int lround( float );§\indexc{lround}§
    4907 long int lround( double );
    4908 long int lround( long double );
    4909 long long int llround( float );
    4910 long long int llround( double );
    4911 long long int llround( long double );
    4912 \end{lstlisting}
    4913 
    4914 
    4915 \subsection{Manipulation}
    4916 
    4917 \begin{lstlisting}
    4918 float copysign( float, float );§\indexc{copysign}§
    4919 double copysign( double, double );
    4920 long double copysign( long double, long double );
    4921 
    4922 float frexp( float, int * );§\indexc{frexp}§
    4923 double frexp( double, int * );
    4924 long double frexp( long double, int * );
    4925 
    4926 float ldexp( float, int );§\indexc{ldexp}§
    4927 double ldexp( double, int );
    4928 long double ldexp( long double, int );
    4929 
    4930 [ float, float ] modf( float );§\indexc{modf}§
    4931 float modf( float, float * );
    4932 [ double, double ] modf( double );
    4933 double modf( double, double * );
    4934 [ long double, long double ] modf( long double );
    4935 long double modf( long double, long double * );
    4936 
    4937 float nextafter( float, float );§\indexc{nextafter}§
    4938 double nextafter( double, double );
    4939 long double nextafter( long double, long double );
    4940 
    4941 float nexttoward( float, long double );§\indexc{nexttoward}§
    4942 double nexttoward( double, long double );
    4943 long double nexttoward( long double, long double );
    4944 
    4945 float scalbn( float, int );§\indexc{scalbn}§
    4946 double scalbn( double, int );
    4947 long double scalbn( long double, int );
    4948 
    4949 float scalbln( float, long int );§\indexc{scalbln}§
    4950 double scalbln( double, long int );
    4951 long double scalbln( long double, long int );
     4403void swap( T * t1, T * t2 );
    49524404\end{lstlisting}
    49534405
     
    49614413\begin{lstlisting}
    49624414// implementation
    4963 struct Rational {§\indexc{Rational}§
     4415struct Rational {
    49644416        long int numerator, denominator;                                        // invariant: denominator > 0
    49654417}; // Rational
  • src/ArgTweak/FunctionFixer.cc

    rf80e0218 r1b5c81ed  
    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;
    4445
    45                 if ( NameExpr * function = dynamic_cast< NameExpr *>(untypedExpr->get_function() ) ) {
     46                if ( ( function = dynamic_cast< NameExpr *>(untypedExpr->get_function()) ) != 0 ) {
    4647                        std::list < DeclarationWithType * > options;
    4748                        index->lookupId ( function->get_name(), options );
    4849                        for ( std::list < DeclarationWithType * >::iterator i = options.begin(); i != options.end(); i++ ) {
    49                                 if ( FunctionType * f = dynamic_cast< FunctionType * > ( (*i)->get_type() ) )   {
     50                                FunctionType *f;
     51                                if ( ( f = dynamic_cast< FunctionType * > ( (*i)->get_type() ) ) != 0 ) {
    5052                                        std::list < DeclarationWithType * > &pars = f->get_parameters();
     53
    5154                                        bool candidateExists ;
    52                                         for ( std::list < DeclarationWithType * >::iterator p = pars.begin(); p != pars.end(); p++ ) {
     55                                        for ( std::list < DeclarationWithType * >::iterator p = pars.begin(); p != pars.end(); p++ )
    5356                                                if ( ( candidateExists = align( f->get_parameters(), untypedExpr->get_args(), Matcher() ) ) ) break;
    54                                         }
     57
    5558                                        if ( ! candidateExists ) throw SemanticError("Error in function call");
    5659                                } // if
  • src/CodeGen/CodeGenerator.cc

    rf80e0218 r1b5c81ed  
    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 : Thu Jun  9 13:21:00 2016
    13 // Update Count     : 256
     12// Last Modified On : Wed Mar  2 17:32:16 2016
     13// Update Count     : 243
    1414//
    1515
     
    2626#include "SynTree/Statement.h"
    2727#include "SynTree/Type.h"
    28 #include "SynTree/Attribute.h"
    2928
    3029#include "Common/utility.h"
     
    3433#include "OperatorTable.h"
    3534#include "GenType.h"
    36 
    37 #include "InitTweak/InitTweak.h"
    3835
    3936using namespace std;
     
    4845        }
    4946
    50         ostream & CodeGenerator::Indenter::operator()( ostream & output ) const {
     47        ostream & CodeGenerator::Indenter::operator()( ostream & output ) {
    5148          return output << string( cg.cur_indent, ' ' );
    5249        }
    5350
    54         ostream & operator<<( ostream & output, const CodeGenerator::Indenter &indent ) {
     51        ostream & operator<<( ostream & output, CodeGenerator::Indenter &indent ) {
    5552                return indent( output );
    5653        }
    5754
    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 ) { }
     55        CodeGenerator::CodeGenerator( std::ostream &os ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ) { }
    7456
    7557        CodeGenerator::CodeGenerator( std::ostream &os, std::string init, int indentation, bool infunp )
    76                         : indent( *this), cur_indent( indentation ), insideFunction( infunp ), output( os ), printLabels( *this ) {
     58                        : indent( *this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
    7759                //output << std::string( init );
    7860        }
    7961
    8062        CodeGenerator::CodeGenerator( std::ostream &os, char *init, int indentation, bool infunp )
    81                         : indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ), printLabels( *this ) {
     63                        : indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
    8264                //output << std::string( init );
    8365        }
     
    8567        string mangleName( DeclarationWithType *decl ) {
    8668                if ( decl->get_mangleName() != "" ) {
    87                         // need to incorporate scope level in order to differentiate names for destructors
    88                         return decl->get_scopedMangleName();
     69                        return decl->get_mangleName();
    8970                } else {
    9071                        return decl->get_name();
    9172                } // if
    9273        }
    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 
    10974
    11075        //*** Declarations
    11176        void CodeGenerator::visit( FunctionDecl *functionDecl ) {
    112                 genAttributes( functionDecl->get_attributes() );
    113 
    11477                handleStorageClass( functionDecl );
    11578                if ( functionDecl->get_isInline() ) {
     
    13699                handleStorageClass( objectDecl );
    137100                output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
    138 
     101       
    139102                if ( objectDecl->get_init() ) {
    140103                        output << " = ";
     
    150113                if ( aggDecl->get_name() != "" )
    151114                        output << aggDecl->get_name();
    152 
     115       
    153116                std::list< Declaration * > &memb = aggDecl->get_members();
    154117
     
    156119                        output << " {" << endl;
    157120
    158                         cur_indent += CodeGenerator::tabsize;
     121                        cur_indent += CodeGenerator::tabsize; 
    159122                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    160                                 output << indent;
     123                                output << indent; 
    161124                                (*i)->accept( *this );
    162125                                output << ";" << endl;
    163126                        }
    164127
    165                         cur_indent -= CodeGenerator::tabsize;
     128                        cur_indent -= CodeGenerator::tabsize; 
    166129
    167130                        output << indent << "}";
     
    178141                handleAggregate( aggregateDecl );
    179142        }
    180 
     143 
    181144        void CodeGenerator::visit( EnumDecl *aggDecl ) {
    182145                output << "enum ";
     
    184147                if ( aggDecl->get_name() != "" )
    185148                        output << aggDecl->get_name();
    186 
     149       
    187150                std::list< Declaration* > &memb = aggDecl->get_members();
    188151
     
    190153                        output << " {" << endl;
    191154
    192                         cur_indent += CodeGenerator::tabsize;
     155                        cur_indent += CodeGenerator::tabsize; 
    193156                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    194157                                ObjectDecl *obj = dynamic_cast< ObjectDecl* >( *i );
    195158                                assert( obj );
    196                                 output << indent << mangleName( obj );
     159                                output << indent << mangleName( obj ); 
    197160                                if ( obj->get_init() ) {
    198161                                        output << " = ";
     
    202165                        } // for
    203166
    204                         cur_indent -= CodeGenerator::tabsize;
     167                        cur_indent -= CodeGenerator::tabsize; 
    205168
    206169                        output << indent << "}";
    207170                } // if
    208171        }
    209 
     172 
    210173        void CodeGenerator::visit( TraitDecl *aggregateDecl ) {}
    211 
     174 
    212175        void CodeGenerator::visit( TypedefDecl *typeDecl ) {
    213176                output << "typedef ";
    214177                output << genType( typeDecl->get_base(), typeDecl->get_name() );
    215178        }
    216 
     179 
    217180        void CodeGenerator::visit( TypeDecl *typeDecl ) {
    218181                // really, we should mutate this into something that isn't a TypeDecl but that requires large-scale changes,
     
    250213                printDesignators( init->get_designators() );
    251214                output << "{ ";
    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                 }
     215                genCommaList( init->begin_initializers(), init->end_initializers() );
    259216                output << " }";
    260217        }
    261218
    262         void CodeGenerator::visit( Constant *constant ) {
     219        void CodeGenerator::visit( Constant *constant ) { 
    263220                output << constant->get_value() ;
    264221        }
     
    266223        //*** Expressions
    267224        void CodeGenerator::visit( ApplicationExpr *applicationExpr ) {
    268                 extension( applicationExpr );
    269225                if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( applicationExpr->get_function() ) ) {
    270226                        OperatorInfo opInfo;
     
    275231                                  case OT_POSTFIXASSIGN:
    276232                                  case OT_INFIXASSIGN:
    277                                   case OT_CTOR:
    278                                   case OT_DTOR:
    279233                                        {
    280234                                                assert( arg != applicationExpr->get_args().end() );
    281235                                                if ( AddressExpr *addrExpr = dynamic_cast< AddressExpr * >( *arg ) ) {
    282                                                         // remove & from first assignment/ctor argument
     236               
    283237                                                        *arg = addrExpr->get_arg();
    284238                                                } else {
    285                                                         // no address-of operator, so must be a pointer - add dereference
    286239                                                        UntypedExpr *newExpr = new UntypedExpr( new NameExpr( "*?" ) );
    287240                                                        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 );
    292241                                                        *arg = newExpr;
    293242                                                } // if
    294243                                                break;
    295244                                        }
    296 
     245             
    297246                                  default:
    298247                                        // do nothing
    299248                                        ;
    300249                                }
    301 
     250           
    302251                                switch ( opInfo.type ) {
    303252                                  case OT_INDEX:
     
    308257                                        output << "]";
    309258                                        break;
    310 
     259             
    311260                                  case OT_CALL:
    312261                                        // there are no intrinsic definitions of the function call operator
    313262                                        assert( false );
    314263                                        break;
    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 
     264             
    337265                                  case OT_PREFIX:
    338266                                  case OT_PREFIXASSIGN:
     
    343271                                        output << ")";
    344272                                        break;
    345 
     273             
    346274                                  case OT_POSTFIX:
    347275                                  case OT_POSTFIXASSIGN:
     
    350278                                        output << opInfo.symbol;
    351279                                        break;
    352 
    353280
    354281                                  case OT_INFIX:
     
    361288                                        output << ")";
    362289                                        break;
    363 
     290             
    364291                                  case OT_CONSTANT:
    365292                                  case OT_LABELADDRESS:
     
    380307                } // if
    381308        }
    382 
     309 
    383310        void CodeGenerator::visit( UntypedExpr *untypedExpr ) {
    384                 extension( untypedExpr );
    385311                if ( NameExpr *nameExpr = dynamic_cast< NameExpr* >( untypedExpr->get_function() ) ) {
    386312                        OperatorInfo opInfo;
     
    395321                                        output << "]";
    396322                                        break;
    397 
     323             
    398324                                  case OT_CALL:
    399325                                        assert( false );
    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 
     326                                        break;
     327             
    423328                                  case OT_PREFIX:
    424329                                  case OT_PREFIXASSIGN:
     
    430335                                        output << ")";
    431336                                        break;
    432 
     337             
    433338                                  case OT_POSTFIX:
    434339                                  case OT_POSTFIXASSIGN:
     
    437342                                        output << opInfo.symbol;
    438343                                        break;
    439 
     344 
    440345                                  case OT_INFIX:
    441346                                  case OT_INFIXASSIGN:
     
    447352                                        output << ")";
    448353                                        break;
    449 
     354                                       
    450355                                  case OT_CONSTANT:
    451356                                        // there are no intrinsic definitions of 0 or 1 as functions
     
    465370                } // if
    466371        }
    467 
     372 
    468373        void CodeGenerator::visit( NameExpr *nameExpr ) {
    469                 extension( nameExpr );
    470374                OperatorInfo opInfo;
    471375                if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
     
    476380                } // if
    477381        }
    478 
     382 
    479383        void CodeGenerator::visit( AddressExpr *addressExpr ) {
    480                 extension( addressExpr );
    481384                output << "(&";
    482385                // this hack makes sure that we don't convert "constant_zero" to "0" if we're taking its address
     
    490393
    491394        void CodeGenerator::visit( CastExpr *castExpr ) {
    492                 extension( castExpr );
    493395                output << "(";
    494396                if ( castExpr->get_results().empty() ) {
     
    507409                output << ")";
    508410        }
    509 
     411 
    510412        void CodeGenerator::visit( UntypedMemberExpr *memberExpr ) {
    511413                assert( false );
    512414        }
    513 
     415 
    514416        void CodeGenerator::visit( MemberExpr *memberExpr ) {
    515                 extension( memberExpr );
    516417                memberExpr->get_aggregate()->accept( *this );
    517418                output << "." << mangleName( memberExpr->get_member() );
    518419        }
    519 
     420 
    520421        void CodeGenerator::visit( VariableExpr *variableExpr ) {
    521                 extension( variableExpr );
    522422                OperatorInfo opInfo;
    523423                if ( variableExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( variableExpr->get_var()->get_name(), opInfo ) && opInfo.type == OT_CONSTANT ) {
     
    527427                } // if
    528428        }
    529 
     429 
    530430        void CodeGenerator::visit( ConstantExpr *constantExpr ) {
    531431                assert( constantExpr->get_constant() );
    532                 extension( constantExpr );
    533432                constantExpr->get_constant()->accept( *this );
    534433        }
    535 
     434 
    536435        void CodeGenerator::visit( SizeofExpr *sizeofExpr ) {
    537                 extension( sizeofExpr );
    538436                output << "sizeof(";
    539437                if ( sizeofExpr->get_isType() ) {
     
    546444
    547445        void CodeGenerator::visit( AlignofExpr *alignofExpr ) {
    548                 extension( alignofExpr );
    549446                // use GCC extension to avoid bumping std to C11
    550447                output << "__alignof__(";
     
    562459
    563460        void CodeGenerator::visit( OffsetofExpr *offsetofExpr ) {
    564                 extension( offsetofExpr );
    565461                // use GCC builtin
    566462                output << "__builtin_offsetof(";
     
    573469                assert( false && "OffsetPackExpr should not reach code generation" );
    574470        }
    575 
     471 
    576472        void CodeGenerator::visit( LogicalExpr *logicalExpr ) {
    577                 extension( logicalExpr );
    578473                output << "(";
    579474                logicalExpr->get_arg1()->accept( *this );
     
    586481                output << ")";
    587482        }
    588 
     483 
    589484        void CodeGenerator::visit( ConditionalExpr *conditionalExpr ) {
    590                 extension( conditionalExpr );
    591485                output << "(";
    592486                conditionalExpr->get_arg1()->accept( *this );
     
    597491                output << ")";
    598492        }
    599 
     493 
    600494        void CodeGenerator::visit( CommaExpr *commaExpr ) {
    601                 extension( commaExpr );
    602495                output << "(";
    603496                commaExpr->get_arg1()->accept( *this );
     
    606499                output << ")";
    607500        }
    608 
     501 
    609502        void CodeGenerator::visit( TupleExpr *tupleExpr ) {}
    610 
     503 
    611504        void CodeGenerator::visit( TypeExpr *typeExpr ) {}
    612505
    613506        void CodeGenerator::visit( AsmExpr *asmExpr ) {
    614                 extension( asmExpr );
    615507                if ( asmExpr->get_inout() ) {
    616508                        output << "[ ";
     
    640532                        }
    641533                }
    642                 cur_indent -= CodeGenerator::tabsize;
     534                cur_indent -= CodeGenerator::tabsize; 
    643535
    644536                output << indent << "}";
     
    646538
    647539        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
    648543                assert( exprStmt );
    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 << ";";
     544
     545                // if ( exprStmt != 0 ) {
     546                exprStmt->get_expr()->accept( *this );
     547                output << ";" ;
     548                // } // if
    653549        }
    654550
     
    693589                switchStmt->get_condition()->accept( *this );
    694590                output << " ) ";
    695 
     591               
    696592                output << "{" << std::endl;
    697593                cur_indent += CodeGenerator::tabsize;
     
    713609                } // if
    714610                output << ":\n";
    715 
     611               
    716612                std::list<Statement *> sts = caseStmt->get_statements();
    717613
     
    730626                        if ( ! branchStmt->get_target().empty() )
    731627                                output << "goto " << branchStmt->get_target();
    732                         else {
     628                        else { 
    733629                                if ( branchStmt->get_computedTarget() != 0 ) {
    734630                                        output << "goto *";
     
    750646        void CodeGenerator::visit( ReturnStmt *returnStmt ) {
    751647                output << "return ";
    752                 maybeAccept( returnStmt->get_expr(), *this );
     648
     649                // xxx -- check for null expression;
     650                if ( returnStmt->get_expr() ) {
     651                        returnStmt->get_expr()->accept( *this );
     652                } // if
    753653                output << ";";
    754654        }
    755655
    756656        void CodeGenerator::visit( WhileStmt *whileStmt ) {
    757                 if ( whileStmt->get_isDoWhile() ) {
     657                if ( whileStmt->get_isDoWhile() )
    758658                        output << "do" ;
    759                 } else {
     659                else {
    760660                        output << "while (" ;
    761661                        whileStmt->get_condition()->accept( *this );
     
    777677
    778678        void CodeGenerator::visit( ForStmt *forStmt ) {
    779                 // initialization is always hoisted, so don't
    780                 // bother doing anything with that
     679                // initialization is always hoisted, so don't 
     680                // bother doing anything with that 
    781681                output << "for (;";
    782682
    783                 if ( forStmt->get_condition() != 0 ) {
     683                if ( forStmt->get_condition() != 0 )
    784684                        forStmt->get_condition()->accept( *this );
    785                 }
    786685                output << ";";
    787686
    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                 }
     687                if ( forStmt->get_increment() != 0 )
     688                        forStmt->get_increment()->accept( *this );
    793689                output << ") ";
    794690
     
    806702        void CodeGenerator::visit( DeclStmt *declStmt ) {
    807703                declStmt->get_decl()->accept( *this );
    808 
     704       
    809705                if ( doSemicolon( declStmt->get_decl() ) ) {
    810706                        output << ";";
    811707                } // 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;
    812718        }
    813719
  • src/CodeGen/CodeGenerator.h

    rf80e0218 r1b5c81ed  
    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 : Thu Jun  9 13:15:58 2016
    13 // Update Count     : 29
     12// Last Modified On : Wed Mar  2 17:32:24 2016
     13// Update Count     : 28
    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 * );
    88 
    89                 void genAttributes( std::list< Attribute * > & attributes );
     87                virtual void visit( DeclStmt * );
    9088
    9189                template< class Iterator > void genCommaList( Iterator begin, Iterator end );
     
    9492                        Indenter(CodeGenerator &cg) : cg(cg) {}
    9593                        CodeGenerator & cg;
    96                         std::ostream& operator()(std::ostream & os) const;
     94                        std::ostream& operator()(std::ostream & os);
    9795                };
    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
    11196          private:
    11297
     
    115100                bool insideFunction;
    116101                std::ostream &output;
    117                 LabelPrinter printLabels;
    118102
    119103                void printDesignators( std::list< Expression * > & );
     104                static std::string printLabels ( std::list < Label > & );
    120105                void handleStorageClass( Declaration *decl );
    121106                void handleAggregate( AggregateDecl *aggDecl );
     
    123108
    124109        };
    125 
     110       
    126111        template< class Iterator >
    127112        void CodeGenerator::genCommaList( Iterator begin, Iterator end ) {
     
    134119                } // for
    135120        }
    136 
     121 
    137122        inline bool doSemicolon( Declaration* decl ) {
    138123                if ( FunctionDecl* func = dynamic_cast< FunctionDecl* >( decl ) ) {
  • src/CodeGen/FixNames.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Mon Apr 11 15:38:10 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 23:36:42 2015
    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 );
    3528        };
    3629
     
    4033        }
    4134
    42         void FixNames::fixDWT( DeclarationWithType *dwt ) {
     35        void fixDWT( DeclarationWithType *dwt ) {
    4336                if ( dwt->get_name() != "" ) {
    4437                        if ( LinkageSpec::isDecoratable( dwt->get_linkage() ) ) {
    4538                                dwt->set_mangleName( SymTab::Mangler::mangle( dwt ) );
    46                                 dwt->set_scopeLevel( scopeLevel );
    4739                        } // if
    4840                } // if
     
    5850                fixDWT( functionDecl );
    5951        }
    60 
    61         void FixNames::visit( CompoundStmt *compoundStmt ) {
    62                 scopeLevel++;
    63                 Visitor::visit( compoundStmt );
    64                 scopeLevel--;
    65         }
    6652} // namespace CodeGen
    6753
  • src/CodeGen/OperatorTable.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Thu Apr 14 16:48:27 2016
    13 // Update Count     : 9
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jun 23 17:41:14 2015
     13// Update Count     : 5
    1414//
    1515
     
    2121                const OperatorInfo tableValues[] = {
    2222                        {       "?[?]",         "",             "_operator_index",                              OT_INDEX                        },
    23                         {       "?{}",          "=",            "_constructor",                                 OT_CTOR                         },
    24                         {       "^?{}",         "",             "_destructor",                                  OT_DTOR                         },
    2523                        {       "?()",          "",             "_operator_call",                               OT_CALL                         },
    2624                        {       "?++",          "++",   "_operator_postincr",                   OT_POSTFIXASSIGN        },
  • src/CodeGen/OperatorTable.h

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

    rf80e0218 r1b5c81ed  
    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 : Wed Jun  8 17:33:59 2016
    13 // Update Count     : 22
     12// Last Modified On : Thu Jul  2 18:04:41 2015
     13// Update Count     : 16
    1414//
    1515
     
    3333}
    3434
    35 template<typename T, typename U>
    36 struct 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 
    4635template< typename T, typename U >
    4736static inline T * maybeBuild( const U *orig ) {
    48         return maybeBuild_t<T,U>::doit(orig);
     37        if ( orig ) {
     38                return orig->build();
     39        } else {
     40                return 0;
     41        } // if
    4942}
    5043
     
    6962                        os << std::string( indent,  ' ' );
    7063                        (*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
    7264                        os << std::endl;
    7365                } // if
     
    136128}
    137129
    138 template < typename T >
     130template < typename T > 
    139131std::string toString ( T value ) {
    140132        std::ostringstream os;
  • src/ControlStruct/LabelFixer.cc

    rf80e0218 r1b5c81ed  
    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                         Label & l = *i;
    98                         l.set_statement( definition ); // attach statement to the label to be used later
    99                         if ( labelTable.find( l ) == labelTable.end() ) {
     97                        if ( labelTable.find( *i ) == labelTable.end() ) {
    10098                                // all labels on this statement need to use the same entry, so this should only be created once
    10199                                // undefined and unused until now, add an entry
    102                                 labelTable[ l ] =  e;
    103                         } else if ( labelTable[ l ]->defined() ) {
     100                                labelTable[ *i ] =  e;
     101                        } else if ( labelTable[ *i ]->defined() ) {
    104102                                // defined twice, error
    105                                 throw SemanticError( "Duplicate definition of label: " + l.get_name() );
     103                                throw SemanticError( "Duplicate definition of label: " + *i );
    106104                        }       else {
    107105                                // used previously, but undefined until now -> link with this entry
    108                                 delete labelTable[ l ];
    109                                 labelTable[ l ] = e;
     106                                delete labelTable[ *i ];
     107                                labelTable[ *i ] = e;
    110108                        } // if
    111109                } // for
    112110
    113                 // produce one of the labels attached to this statement to be
     111                // produce one of the labels attached to this statement to be 
    114112                // temporarily used as the canonical label
    115113                return labelTable[ llabel.front() ]->get_label();
    116114        }
    117115
    118         // A label was used, add it to the table if it isn't already there
     116        // A label was used, add it ot the table if it isn't already there
    119117        template< typename UsageNode >
    120118        void LabelFixer::setLabelsUsg( Label orgValue, UsageNode *use ) {
     
    132130                for ( std::map< Label, Entry * >::iterator i = labelTable.begin(); i != labelTable.end(); ++i ) {
    133131                        if ( ! i->second->defined() ) {
    134                                 throw SemanticError( "Use of undefined label: " + i->first.get_name() );
     132                                throw SemanticError( "Use of undefined label: " + i->first );
    135133                        }
    136134                        (*ret)[ i->first ] = i->second->get_definition();
  • src/ControlStruct/LabelFixer.h

    rf80e0218 r1b5c81ed  
    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"
    2322#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

    rf80e0218 r1b5c81ed  
    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"
    2220
    2321namespace ControlStruct {
     
    3533                os << "__L" << current++ << "__" << suffix;
    3634                std::string ret = os.str();
    37                 Label l( ret );
    38                 l.get_attributes().push_back( new Attribute("unused") );
    39                 return l;
     35                return Label( ret );
    4036        }
    4137} // namespace ControlStruct
  • src/ControlStruct/MLEMutator.cc

    rf80e0218 r1b5c81ed  
    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"
    3029
    3130namespace ControlStruct {
     
    3433                targetTable = 0;
    3534        }
    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,
     35
     36        // break labels have to come after the statement they break out of,
    4137        // so mutate a statement, then if they inform us through the breakLabel field
    42         // tha they need a place to jump to on a break statement, add the break label
     38        // tha they need a place to jump to on a break statement, add the break label 
    4339        // to the body of statements
    4440        void MLEMutator::fixBlock( std::list< Statement * > &kids ) {
     
    4844                        if ( ! get_breakLabel().empty() ) {
    4945                                std::list< Statement * >::iterator next = k+1;
    50                                 std::list<Label> ls; ls.push_back( get_breakLabel() );
    51                                 kids.insert( next, new NullStmt( ls ) );
     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
    5253                                set_breakLabel("");
    5354                        } // if
     
    5960                if ( labeledBlock ) {
    6061                        Label brkLabel = generator->newLabel("blockBreak");
    61                         enclosingControlStructures.push_back( Entry( cmpndStmt, brkLabel ) );
     62                        enclosingBlocks.push_back( Entry( cmpndStmt, brkLabel ) );
    6263                } // if
    6364
     
    6869
    6970                if ( labeledBlock ) {
    70                         assert( ! enclosingControlStructures.empty() );
    71                         if ( ! enclosingControlStructures.back().useBreakExit().empty() ) {
    72                                 set_breakLabel( enclosingControlStructures.back().useBreakExit() );
     71                        assert( ! enclosingBlocks.empty() );
     72                        if ( ! enclosingBlocks.back().useBreakExit().empty() ) {
     73                                set_breakLabel( enclosingBlocks.back().useBreakExit() );
    7374                        }
    74                         enclosingControlStructures.pop_back();
     75                        enclosingBlocks.pop_back();
    7576                } // if
    7677
     
    8081        template< typename LoopClass >
    8182        Statement *MLEMutator::handleLoopStmt( LoopClass *loopStmt ) {
    82                 // remember this as the most recent enclosing loop, then mutate
     83                // remember this as the most recent enclosing loop, then mutate 
    8384                // the body of the loop -- this will determine whether brkLabel
    8485                // and contLabel are used with branch statements
     
    8687                Label brkLabel = generator->newLabel("loopBreak");
    8788                Label contLabel = generator->newLabel("loopContinue");
    88                 enclosingControlStructures.push_back( Entry( loopStmt, brkLabel, contLabel ) );
     89                enclosingLoops.push_back( Entry( loopStmt, brkLabel, contLabel ) );
    8990                loopStmt->set_body ( loopStmt->get_body()->acceptMutator( *this ) );
    9091
    9192                // sanity check that the enclosing loops have been popped correctly
    92                 Entry &e = enclosingControlStructures.back();
     93                Entry &e = enclosingLoops.back();
    9394                assert ( e == loopStmt );
    9495
     
    9697                // two labels, if they are used.
    9798                loopStmt->set_body( mutateLoop( loopStmt->get_body(), e ) );
    98                 enclosingControlStructures.pop_back();
     99                enclosingLoops.pop_back();
    99100
    100101                return loopStmt;
     
    110111        template< typename SwitchClass >
    111112        Statement *MLEMutator::handleSwitchStmt( SwitchClass *switchStmt ) {
    112                 // generate a label for breaking out of a labeled switch
     113                // generate a label for breaking out of a labeled switch 
    113114                Label brkLabel = generator->newLabel("switchBreak");
    114                 enclosingControlStructures.push_back( Entry(switchStmt, brkLabel) );
    115                 mutateAll( switchStmt->get_branches(), *this );
    116 
    117                 Entry &e = enclosingControlStructures.back();
     115                enclosingSwitches.push_back( Entry(switchStmt, brkLabel) );
     116                mutateAll( switchStmt->get_branches(), *this ); 
     117
     118                Entry &e = enclosingSwitches.back();
    118119                assert ( e == switchStmt );
    119120
    120121                // only generate break label if labeled break is used
    121122                if (e.isBreakUsed()) {
    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
     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 
    124125                        // last case statement; create a default case if there are no cases
    125126                        std::list< Statement * > &branches = switchStmt->get_branches();
     
    130131                        if ( CaseStmt * c = dynamic_cast< CaseStmt * >( branches.back() ) ) {
    131132                                std::list<Label> temp; temp.push_back( brkLabel );
    132                                 c->get_statements().push_back( new BranchStmt( temp, Label("brkLabel"), BranchStmt::Break ) );
     133                                c->get_statements().push_back( new BranchStmt( temp, Label(""), BranchStmt::Break ) );
    133134                        } else assert(0); // as of this point, all branches of a switch are still CaseStmts
    134135                }
    135136
    136                 assert ( enclosingControlStructures.back() == switchStmt );
    137                 enclosingControlStructures.pop_back();
     137                assert ( enclosingSwitches.back() == switchStmt );
     138                enclosingSwitches.pop_back();
    138139                return switchStmt;
    139140        }
     
    142143                std::string originalTarget = branchStmt->get_originalTarget();
    143144
    144                 std::list< Entry >::reverse_iterator targetEntry;
    145                 if ( branchStmt->get_type() == BranchStmt::Goto ) {
     145                if ( branchStmt->get_type() == BranchStmt::Goto )
    146146                        return branchStmt;
    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()] );
     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 );
    154154                        }
    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() ) {
     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() )
    166163                        throw SemanticError("The label defined in the exit loop statement does not exist: " + originalTarget );  // shouldn't happen (since that's already checked)
    167                 }
     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)
    168176
    169177                // branch error checks, get the appropriate label name and create a goto
     
    171179                switch ( branchStmt->get_type() ) {
    172180                  case BranchStmt::Break:
    173                                 assert( targetEntry->useBreakExit() != "");
    174                                 exitLabel = targetEntry->useBreakExit();
     181                                assert( check->useBreakExit() != "");
     182                                exitLabel = check->useBreakExit();
    175183                                break;
    176184                  case BranchStmt::Continue:
    177                                 assert( targetEntry->useContExit() != "");
    178                                 exitLabel = targetEntry->useContExit();
     185                                assert( check->useContExit() != "");
     186                                exitLabel = check->useContExit();
    179187                                break;
    180188                  default:
     
    182190                } // switch
    183191
    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                 }
     192                return new BranchStmt( std::list<Label>(), exitLabel, BranchStmt::Goto );
    194193        }
    195194
     
    207206                        // continue label goes in the body as the last statement
    208207                        std::list< Label > labels; labels.push_back( e.useContExit() );
    209                         newBody->get_kids().push_back( new NullStmt( labels ) );
     208                        newBody->get_kids().push_back( new NullStmt( labels ) );                       
    210209                }
    211210
    212211                if ( e.isBreakUsed() ) {
    213                         // break label goes after the loop -- it'll get set by the
     212                        // break label goes after the loop -- it'll get set by the 
    214213                        // outer mutator if we do this
    215                         set_breakLabel( e.useBreakExit() );
     214                        set_breakLabel( e.useBreakExit() );                     
    216215                }
    217216
     
    232231
    233232        Statement *MLEMutator::mutate( ChooseStmt *switchStmt ) {
    234                 return handleSwitchStmt( switchStmt );
     233                return handleSwitchStmt( switchStmt );         
    235234        }
    236235
  • src/ControlStruct/MLEMutator.h

    rf80e0218 r1b5c81ed  
    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"
    2625
    2726#include "LabelGenerator.h"
     
    3938                Statement *mutate( BranchStmt *branchStmt ) throw ( SemanticError );
    4039
    41                 Statement *mutate( CaseStmt *caseStmt );
     40                Statement *mutate( CaseStmt *caseStmt ); 
    4241                Statement *mutate( SwitchStmt *switchStmt );
    4342                Statement *mutate( ChooseStmt *switchStmt );
     
    5655                        bool operator!=( const Statement *stmt ) { return ( loop != stmt ); }
    5756
    58                         bool operator==( const Entry &other ) { return ( loop == other.get_controlStructure() ); }
     57                        bool operator==( const Entry &other ) { return ( loop == other.get_loop() ); }
    5958
    60                         Statement *get_controlStructure() const { return loop; }
     59                        Statement *get_loop() const { return loop; }
    6160
    6261                        Label useContExit() { contUsed = true; return contExit; }
     
    7372
    7473                std::map< Label, Statement * > *targetTable;
    75                 std::list< Entry > enclosingControlStructures;
     74                std::list< Entry > enclosingBlocks, enclosingLoops, enclosingSwitches;
    7675                Label breakLabel;
    7776                LabelGenerator *generator;
     
    8079                Statement *handleLoopStmt( LoopClass *loopStmt );
    8180
    82                 template< typename SwitchClass >
     81                template< typename SwitchClass > 
    8382                Statement *handleSwitchStmt( SwitchClass *switchStmt );
    8483
  • src/ControlStruct/Mutate.cc

    rf80e0218 r1b5c81ed  
    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 
    4441                // normalizes label definitions and generates multi-level
    4542                // exit labels
    4643                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                acceptAll( translationUnit, lfix );
    5556                mutateAll( translationUnit, chmut );
    56                 acceptAll( translationUnit, lfix );
    5757                mutateAll( translationUnit, ranges );
    5858                //mutateAll( translationUnit, exc );
  • src/GenPoly/Box.cc

    rf80e0218 r1b5c81ed  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 13 14:51:21 2016
    13 // Update Count     : 295
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Feb  5 16:45:07 2016
     13// Update Count     : 286
    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 findTypeOps( const std::list< TypeDecl *> &forall );
     199                        void findAssignOps( 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
    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
     207                        ScopedMap< std::string, DeclarationWithType *> assignOps;    ///< Currently known type variable assignment operators
    211208                        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
    215209                        ScopedMap< std::string, DeclarationWithType* > adapters;     ///< Set of adapter functions in the current scope
    216 
     210                       
    217211                        DeclarationWithType *retval;
    218212                        bool useRetval;
     
    232226                        virtual Type *mutate( PointerType *pointerType );
    233227                        virtual Type *mutate( FunctionType *funcType );
    234 
     228                       
    235229                  private:
    236230                        void addAdapters( FunctionType *functionType );
     
    303297                        /// Exits the type-variable scope
    304298                        void endTypeScope();
    305 
     299                       
    306300                        ScopedSet< std::string > knownLayouts;          ///< Set of generic type layouts known in the current scope, indexed by sizeofName
    307301                        ScopedSet< std::string > knownOffsets;          ///< Set of non-generic types for which the offset array exists in the current scope, indexed by offsetofName
     
    357351                PolyGenericCalculator polyCalculator;
    358352                Pass3 pass3;
    359 
     353               
    360354                layoutBuilder.mutateDeclarationList( translationUnit );
    361355                mutateTranslationUnit/*All*/( translationUnit, pass1 );
     
    376370                return functionDecl;
    377371        }
    378 
     372       
    379373        /// Get a list of type declarations that will affect a layout function
    380374        std::list< TypeDecl* > takeOtypeOnly( std::list< TypeDecl* > &decls ) {
     
    386380                        }
    387381                }
    388 
     382               
    389383                return otypeDecls;
    390384        }
     
    393387        void addOtypeParams( FunctionType *layoutFnType, std::list< TypeDecl* > &otypeParams ) {
    394388                BasicType sizeAlignType( Type::Qualifiers(), BasicType::LongUnsignedInt );
    395 
     389               
    396390                for ( std::list< TypeDecl* >::const_iterator param = otypeParams.begin(); param != otypeParams.end(); ++param ) {
    397391                        TypeInstType paramType( Type::Qualifiers(), (*param)->get_name(), *param );
     
    450444                return makeCond( ifCond, ifExpr );
    451445        }
    452 
     446       
    453447        /// adds an expression to a compound statement
    454448        void addExpr( CompoundStmt *stmts, Expression *expr ) {
     
    460454                stmts->get_kids().push_back( stmt );
    461455        }
    462 
     456       
    463457        Declaration *LayoutFunctionBuilder::mutate( StructDecl *structDecl ) {
    464458                // do not generate layout function for "empty" tag structs
     
    473467                BasicType *sizeAlignType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
    474468                PointerType *sizeAlignOutType = new PointerType( Type::Qualifiers(), sizeAlignType );
    475 
     469               
    476470                ObjectDecl *sizeParam = new ObjectDecl( sizeofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType, 0 );
    477471                layoutFnType->get_parameters().push_back( sizeParam );
     
    503497                                addStmt( layoutDecl->get_statements(), makeAlignTo( derefVar( sizeParam ), new AlignofExpr( memberType->clone() ) ) );
    504498                        }
    505 
     499                       
    506500                        // place current size in the current offset index
    507                         addExpr( layoutDecl->get_statements(), makeOp( "?=?", makeOp( "?[?]", new VariableExpr( offsetParam ), new ConstantExpr( Constant::from_ulong( n_members ) ) ),
     501                        addExpr( layoutDecl->get_statements(), makeOp( "?=?", makeOp( "?[?]", new VariableExpr( offsetParam ), new ConstantExpr( Constant::from( n_members ) ) ),
    508502                                                                              derefVar( sizeParam ) ) );
    509503                        ++n_members;
     
    511505                        // add member size to current size
    512506                        addExpr( layoutDecl->get_statements(), makeOp( "?+=?", derefVar( sizeParam ), new SizeofExpr( memberType->clone() ) ) );
    513 
     507                       
    514508                        // take max of member alignment and global alignment
    515509                        addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( alignParam ), new AlignofExpr( memberType->clone() ) ) );
     
    521515                return structDecl;
    522516        }
    523 
     517       
    524518        Declaration *LayoutFunctionBuilder::mutate( UnionDecl *unionDecl ) {
    525519                // do not generate layout function for "empty" tag unions
    526520                if ( unionDecl->get_members().empty() ) return unionDecl;
    527 
     521               
    528522                // get parameters that can change layout, exiting early if none
    529523                std::list< TypeDecl* > otypeParams = takeOtypeOnly( unionDecl->get_parameters() );
     
    534528                BasicType *sizeAlignType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
    535529                PointerType *sizeAlignOutType = new PointerType( Type::Qualifiers(), sizeAlignType );
    536 
     530               
    537531                ObjectDecl *sizeParam = new ObjectDecl( sizeofName( unionDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType, 0 );
    538532                layoutFnType->get_parameters().push_back( sizeParam );
     
    551545                        assert( dwt );
    552546                        Type *memberType = dwt->get_type();
    553 
     547                       
    554548                        // take max member size and global size
    555549                        addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( sizeParam ), new SizeofExpr( memberType->clone() ) ) );
    556 
     550                       
    557551                        // take max of member alignment and global alignment
    558552                        addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( alignParam ), new AlignofExpr( memberType->clone() ) ) );
     
    564558                return unionDecl;
    565559        }
    566 
     560       
    567561        ////////////////////////////////////////// Pass1 ////////////////////////////////////////////////////
    568562
     
    606600                Pass1::Pass1() : useRetval( false ), tempNamer( "_temp" ) {}
    607601
    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;
     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
    631613                                                                } // if
    632614                                                        } // if
     
    638620                }
    639621               
    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;
     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
    673641                                                } // if
    674642                                        } // if
     
    677645                        return 0;
    678646                }
    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 ) {
     647
     648                void Pass1::findAssignOps( const std::list< TypeDecl *> &forall ) {
    729649                        // what if a nested function uses an assignment operator?
    730650                        // assignOps.clear();
     
    734654                                        if ( TypeInstType *typeInst = isTypeInstAssignment( *assert ) ) {
    735655                                                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;
    742656                                        } // if
    743657                                } // for
     
    747661                DeclarationWithType *Pass1::mutate( FunctionDecl *functionDecl ) {
    748662                        // if this is a assignment function, put it in the map for this scope
    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 );
     663                        if ( Type *assignedType = isAssignment( functionDecl ) ) {
     664                                if ( ! dynamic_cast< TypeInstType* >( assignedType ) ) {
     665                                        scopedAssignOps.insert( assignedType, functionDecl );
    764666                                }
    765667                        }
     
    769671                                scopeTyVars.beginScope();
    770672                                assignOps.beginScope();
    771                                 ctorOps.beginScope();
    772                                 copyOps.beginScope();
    773                                 dtorOps.beginScope();
    774                                
    775673                                DeclarationWithType *oldRetval = retval;
    776674                                bool oldUseRetval = useRetval;
     
    790688                                FunctionType *functionType = functionDecl->get_functionType();
    791689                                makeTyVarMap( functionDecl->get_functionType(), scopeTyVars );
    792                                 findTypeOps( functionDecl->get_functionType()->get_forall() );
     690                                findAssignOps( functionDecl->get_functionType()->get_forall() );
    793691
    794692                                std::list< DeclarationWithType *> &paramList = functionType->get_parameters();
     
    815713                                scopeTyVars.endScope();
    816714                                assignOps.endScope();
    817                                 ctorOps.endScope();
    818                                 copyOps.endScope();
    819                                 dtorOps.endScope();
    820715                                retval = oldRetval;
    821716                                useRetval = oldUseRetval;
     
    889784                                                arg++;
    890785                                        } else {
    891                                                 /// xxx - should this be an assertion?
    892                                                 throw SemanticError( "unbound type variable: " + tyParm->first + " in application ", appExpr );
     786                                                throw SemanticError( "unbound type variable in application ", appExpr );
    893787                                        } // if
    894788                                } // if
     
    909803                                passArgTypeVars( appExpr, polyRetType, concRetType, arg, exprTyVars, seenTypes );
    910804                        }
    911 
     805                       
    912806                        // add type information args for presently unseen types in parameter list
    913807                        for ( ; fnParm != funcType->get_parameters().end() && fnArg != appExpr->get_args().end(); ++fnParm, ++fnArg ) {
     
    988882                        assert( env );
    989883                        Type *concrete = replaceWithConcrete( appExpr, polyType );
    990                         // add out-parameter for return value
     884                        // add out-parameter for return value   
    991885                        return addRetParam( appExpr, function, concrete, arg );
    992886                }
     
    1016910                                } else if ( arg->get_results().front()->get_isLvalue() ) {
    1017911                                        // 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
    1019912                                        if ( CommaExpr *commaArg = dynamic_cast< CommaExpr* >( arg ) ) {
    1020913                                                commaArg->set_arg2( new AddressExpr( commaArg->get_arg2() ) );
     
    11421035                        std::list< DeclarationWithType *>::iterator param = adapterType->get_parameters().begin();
    11431036                        std::list< DeclarationWithType *>::iterator realParam = adaptee->get_parameters().begin();
    1144                         param++;                // skip adaptee parameter in the adapter type
     1037                        param++;                // skip adaptee parameter
    11451038                        if ( realType->get_returnVals().empty() ) {
    1146                                 // void return
    11471039                                addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars );
    11481040                                bodyStmt = new ExprStmt( noLabels, adapteeApp );
    11491041                        } else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
    1150                                 // return type T
    11511042                                if ( (*param)->get_name() == "" ) {
    11521043                                        (*param)->set_name( "_ret" );
     
    14001291                        } else if ( needsAdapter( function, scopeTyVars ) ) {
    14011292                                // std::cerr << "needs adapter: ";
    1402                                 // printTyVarMap( std::cerr, scopeTyVars );
    1403                                 // std::cerr << *env << std::endl;
     1293                                // for ( TyVarMap::iterator i = scopeTyVars.begin(); i != scopeTyVars.end(); ++i ) {
     1294                                //      std::cerr << i->first << " ";
     1295                                // }
     1296                                // std::cerr << "\n";
    14041297                                // change the application so it calls the adapter rather than the passed function
    14051298                                ret = applyAdapter( appExpr, function, arg, scopeTyVars );
     
    14521345                                } // if
    14531346                        } // 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 );
    14571347                        addrExpr->set_arg( mutateExpression( addrExpr->get_arg() ) );
    1458                         if ( polytype || needs ) {
     1348                        if ( isPolyType( addrExpr->get_arg()->get_results().front(), scopeTyVars, env ) || needs ) {
    14591349                                Expression *ret = addrExpr->get_arg();
    14601350                                delete ret->get_results().front();
     
    14751365                        functionObj->set_mangleName( functionDecl->get_mangleName() );
    14761366                        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 ) );
    14931367                }
    14941368               
     
    15391413                                                assignExpr->get_env()->add( (*forallIt)->get_name(), formalType );
    15401414
    1541                                                 // skip non-otype parameters (ftype/dtype)
     1415                                                // skip types with no assign op (ftype/dtype)
    15421416                                                if ( (*forallIt)->get_kind() != TypeDecl::Any ) continue;
    15431417
    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
     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
    15591434                                                std::list< DeclarationWithType* > &asserts = (*forallIt)->get_assertions();
    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 ) );
     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 ) );
    15741439                                        }
    15751440                                }
     
    16171482                        adapters.beginScope();
    16181483                        scopedAssignOps.beginScope();
    1619                         scopedCtorOps.beginScope();
    1620                         scopedCopyOps.beginScope();
    1621                         scopedDtorOps.beginScope();
    16221484                }
    16231485
     
    16251487                        adapters.endScope();
    16261488                        scopedAssignOps.endScope();
    1627                         scopedCtorOps.endScope();
    1628                         scopedCopyOps.endScope();
    1629                         scopedDtorOps.endScope();
    16301489                }
    16311490
     
    20271886                                }
    20281887                        }
    2029 
     1888                       
    20301889                        Type *ret = Mutator::mutate( funcType );
    20311890
     
    20461905
    20471906                                        std::list<Expression*> designators;
    2048                                         objectDecl->set_init( new SingleInit( alloc, designators, false ) ); // not constructed
     1907                                        objectDecl->set_init( new SingleInit( alloc, designators ) );
    20491908                                }
    20501909                        }
     
    20831942                                UntypedExpr *derefExpr = new UntypedExpr( new NameExpr( "*?" ) );
    20841943                                derefExpr->get_args().push_back( derefdVar );
    2085                                 // xxx - should set results on derefExpr
    20861944                                derefdVar = derefExpr;
    20871945                        }
    20881946                        return derefdVar;
    20891947                }
    2090 
     1948               
    20911949                Expression *PolyGenericCalculator::mutate( MemberExpr *memberExpr ) {
    20921950                        // mutate, exiting early if no longer MemberExpr
     
    21802038
    21812039                bool PolyGenericCalculator::findGeneric( Type *ty ) {
    2182                         ty = replaceTypeInst( ty, env );
    2183                        
    21842040                        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
    21852047                                if ( scopeTyVars.find( typeInst->get_name() ) != scopeTyVars.end() ) {
    21862048                                        // NOTE assumes here that getting put in the scopeTyVars included having the layout variables set
     
    22042066                                if ( n_members == 0 ) {
    22052067                                        // all empty structs have the same layout - size 1, align 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 ) ) ) );
     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 ) ) ) );
    22082070                                        // NOTE zero-length arrays are forbidden in C, so empty structs have no offsetof array
    22092071                                } else {
    22102072                                        ObjectDecl *sizeVar = makeVar( sizeofName( typeName ), layoutType );
    22112073                                        ObjectDecl *alignVar = makeVar( alignofName( typeName ), layoutType->clone() );
    2212                                         ObjectDecl *offsetVar = makeVar( offsetofName( typeName ), new ArrayType( Type::Qualifiers(), layoutType->clone(), new ConstantExpr( Constant::from_int( n_members ) ), false, false ) );
     2074                                        ObjectDecl *offsetVar = makeVar( offsetofName( typeName ), new ArrayType( Type::Qualifiers(), layoutType->clone(), new ConstantExpr( Constant::from( n_members ) ), false, false ) );
    22132075
    22142076                                        // generate call to layout function
     
    22822144                        Type *ty = offsetofExpr->get_type();
    22832145                        if ( ! findGeneric( ty ) ) return offsetofExpr;
    2284 
     2146                       
    22852147                        if ( StructInstType *structType = dynamic_cast< StructInstType* >( ty ) ) {
    22862148                                // replace offsetof expression by index into offset array
     
    23292191
    23302192                                        // build the offset array and replace the pack with a reference to it
    2331                                         ObjectDecl *offsetArray = makeVar( offsetName, new ArrayType( Type::Qualifiers(), offsetType, new ConstantExpr( Constant::from_ulong( baseMembers.size() ) ), false, false ),
     2193                                        ObjectDecl *offsetArray = makeVar( offsetName, new ArrayType( Type::Qualifiers(), offsetType, new ConstantExpr( Constant::from( baseMembers.size() ) ), false, false ),
    23322194                                                        new ListInit( inits ) );
    23332195                                        ret = new VariableExpr( offsetArray );
  • src/GenPoly/CopyParams.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
     11// Last Modified By : Peter A. Buhr
    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() == "?=?" );
    6059                                                assignOps[ (*tyVar)->get_name() ] = (*tyVar)->get_assertions().front();
    6160                                        } // if
  • src/GenPoly/GenPoly.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Wed May 25 13:39:21 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Dec 15 16:11:18 2015
    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 
    7768        Type *isPolyType( Type *type, const TypeSubstitution *env ) {
    78                 type = replaceTypeInst( type, env );
    79 
    8069                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
    8175                        return type;
    8276                } else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {
     
    8781                return 0;
    8882        }
    89 
     83       
    9084        Type *isPolyType( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env ) {
    91                 type = replaceTypeInst( type, env );
    92 
    9385                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
    9491                        if ( tyVars.find( typeInst->get_name() ) != tyVars.end() ) {
    9592                                return type;
     
    104101
    105102        Type *isPolyPtr( Type *type, const TypeSubstitution *env ) {
    106                 type = replaceTypeInst( type, env );
    107 
    108103                if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
    109104                        return isPolyType( ptr->get_base(), env );
    110                 }
    111                 return 0;
    112         }
    113 
     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       
    114115        Type *isPolyPtr( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env ) {
    115                 type = replaceTypeInst( type, env );
    116 
    117116                if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
    118117                        return isPolyType( ptr->get_base(), tyVars, env );
    119                 }
     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
    120125                return 0;
    121126        }
     
    127132
    128133                while ( true ) {
    129                         type = replaceTypeInst( type, env );
    130 
    131134                        if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
    132135                                type = ptr->get_base();
    133136                                ++(*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;
    134143                        } else break;
    135144                }
     
    137146                return isPolyType( type, env );
    138147        }
    139 
     148       
    140149        Type * hasPolyBase( Type *type, const TyVarMap &tyVars, int *levels, const TypeSubstitution *env ) {
    141150                int dummy;
     
    144153
    145154                while ( true ) {
    146                         type = replaceTypeInst( type, env );
    147 
    148155                        if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
    149156                                type = ptr->get_base();
    150157                                ++(*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;
    151164                        } else break;
    152165                }
     
    172185                        if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( expr ) ) {
    173186                                return varExpr;
    174                         } else if ( MemberExpr *memberExpr = dynamic_cast< MemberExpr* >( expr ) ) {
    175                                 expr = memberExpr->get_aggregate();
    176187                        } else if ( AddressExpr *addressExpr = dynamic_cast< AddressExpr* >( expr ) ) {
    177188                                expr = addressExpr->get_arg();
     
    181192                                if ( ! fn || fn->get_name() != std::string("*?") ) return 0;
    182193                                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;
    187194                        } else break;
    188195
     
    202209                }
    203210        }
    204 
     211       
    205212        void printTyVarMap( std::ostream &os, const TyVarMap &tyVarMap ) {
    206213                for ( TyVarMap::const_iterator i = tyVarMap.begin(); i != tyVarMap.end(); ++i ) {
  • src/GenPoly/GenPoly.h

    rf80e0218 r1b5c81ed  
    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        
    4441        /// returns polymorphic type if is polymorphic type, NULL otherwise; will look up substitution in env if provided
    4542        Type *isPolyType( Type *type, const TypeSubstitution *env = 0 );
  • src/GenPoly/PolyMutator.cc

    rf80e0218 r1b5c81ed  
    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 : Mon May 02 14:50:58 2016
     12// Last Modified On : Fri Aug 14 15:28:50 2015
    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?
    6665                        return expr->acceptMutator( *this );
    6766                } else {
     
    145144                return untypedExpr;
    146145        }
    147 
    148 
     146 
     147 
    149148        Initializer *PolyMutator::mutate( SingleInit *singleInit ) {
    150149                singleInit->set_value( mutateExpression( singleInit->get_value() ) );
  • src/GenPoly/ScopedMap.h

    rf80e0218 r1b5c81ed  
    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

    rf80e0218 r1b5c81ed  
    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

    rf80e0218 r1b5c81ed  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Apr 28 15:17:45 2016
    13 // Update Count     : 24
     12// Last Modified On : Wed Jan 20 12:40:33 2016
     13// Update Count     : 18
    1414//
    1515
     
    2525#include "SynTree/Statement.h"
    2626#include "SynTree/Type.h"
    27 #include "SynTree/Attribute.h"
    2827#include "SynTree/TypeSubstitution.h"
    2928#include "SynTree/Mutator.h"
     
    4241                virtual Expression * mutate( AddressExpr *castExpr );
    4342                virtual Expression * mutate( CastExpr *castExpr );
    44                 // virtual Expression * mutate( LogicalExpr *logicalExpr );
    45                 // virtual Expression * mutate( ConditionalExpr *conditionalExpr );
    46                 // virtual Expression * mutate( CommaExpr *commaExpr );
     43                virtual Expression * mutate( LogicalExpr *logicalExpr );
     44                virtual Expression * mutate( ConditionalExpr *conditionalExpr );
     45                virtual Expression * mutate( CommaExpr *commaExpr );
    4746
    4847          private:
     
    9998                } // if
    10099                // create new thunk with same signature as formal type (C linkage, empty body)
    101                 FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( noLabels ), false, false );
     100                FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false, false );
    102101                thunkFunc->fixUniqueId();
    103 
    104                 // thunks may be generated and not used - silence warning with attribute
    105                 thunkFunc->get_attributes().push_back( new Attribute( "unused" ) );
    106102
    107103                // thread thunk parameters into call to actual function, naming thunk parameters as we go
     
    146142
    147143        Expression * Specialize::doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams ) {
    148                 assert( ! actual->get_results().empty() ); // using front, should have this assert
     144                assert( ! actual->get_results().empty() );
    149145                if ( needsSpecialization( formalType, actual->get_results().front(), env ) ) {
    150146                        FunctionType *funType;
     
    216212        }
    217213
    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         // }
     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        }
    233225} // namespace GenPoly
    234226
  • src/InitTweak/InitModel.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Thu Jan 07 13:38:46 2016
    13 // Update Count     : 5
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue May 19 16:37:08 2015
     13// Update Count     : 1
    1414//
    1515
     
    198198                assert(init == 0 && single != 0);
    199199                std::list< Expression * > empty;
    200                 init = new SingleInit( single->get_expr(), empty, false ); // cannot be constructed
     200                init = new SingleInit( single->get_expr(), empty );
    201201                return;
    202202        }
     
    214214                        } // if
    215215
    216                 std::list< Expression * > desig;
    217                 init = new ListInit( contents, desig, false ); // cannot be constructed
     216                init = new ListInit( contents );
    218217                return;
    219218        }
  • src/InitTweak/module.mk

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

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Fri Apr 22 13:54:15 2016
    13 // Update Count     : 40
    14 //
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Jun 26 16:52:59 2015
     13// Update Count     : 14
     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                 if ( origFuncDecl->get_statements() ) return;
    46 
     45 
    4746                FunctionDecl *funcDecl = origFuncDecl->clone();
    4847                CodeGen::OperatorInfo opInfo;
     
    5554                assert( param != funcDecl->get_functionType()->get_parameters().end() );
    5655
    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 );
     56                if ( (*param)->get_name() == "" ) {
     57                        (*param)->set_name( paramNamer.newName() );
     58                        (*param)->set_linkage( LinkageSpec::C );
     59                } // if
    6760
    6861                switch ( opInfo.type ) {
     
    7265                  case CodeGen::OT_POSTFIX:
    7366                  case CodeGen::OT_INFIX:
     67                        newExpr->get_args().push_back( new VariableExpr( *param ) );
     68                        break;
    7469                  case CodeGen::OT_PREFIXASSIGN:
    7570                  case CodeGen::OT_POSTFIXASSIGN:
    7671                  case CodeGen::OT_INFIXASSIGN:
    77                                 funcDecl->get_statements()->get_kids().push_back( new ReturnStmt( std::list< Label >(), newExpr ) );
     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 );
    7877                                break;
    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;
     78                        }
    9879                  case CodeGen::OT_CONSTANT:
    9980                  case CodeGen::OT_LABELADDRESS:
     
    10182                        assert( false );
    10283                } // 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 );
    10395        }
    10496
    10597        void MakeLibCfa::visit( ObjectDecl* origObjDecl ) {
    10698                if ( origObjDecl->get_linkage() != LinkageSpec::Intrinsic ) return;
    107 
     99 
    108100                ObjectDecl *objDecl = origObjDecl->clone();
    109101                assert( ! objDecl->get_init() );
    110102                std::list< Expression* > noDesignators;
    111                 objDecl->set_init( new SingleInit( new NameExpr( objDecl->get_name() ), noDesignators, false ) ); // cannot be constructed
     103                objDecl->set_init( new SingleInit( new NameExpr( objDecl->get_name() ), noDesignators ) );
    112104                newDecls.push_back( objDecl );
    113105        }
    114106} // namespace LibCfa
     107
     108// Local Variables: //
     109// tab-width: 4 //
     110// mode: c++ //
     111// compile-command: "make install" //
     112// End: //
  • src/Makefile.in

    rf80e0218 r1b5c81ed  
    123123        GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT) \
    124124        GenPoly/driver_cfa_cpp-DeclMutator.$(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) \
     125        InitTweak/driver_cfa_cpp-RemoveInit.$(OBJEXT) \
    129126        Parser/driver_cfa_cpp-parser.$(OBJEXT) \
    130127        Parser/driver_cfa_cpp-lex.$(OBJEXT) \
     
    162159        SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT) \
    163160        SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT) \
    164         SymTab/driver_cfa_cpp-Autogen.$(OBJEXT) \
    165161        SynTree/driver_cfa_cpp-Type.$(OBJEXT) \
    166162        SynTree/driver_cfa_cpp-VoidType.$(OBJEXT) \
     
    194190        SynTree/driver_cfa_cpp-Visitor.$(OBJEXT) \
    195191        SynTree/driver_cfa_cpp-Mutator.$(OBJEXT) \
    196         SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT) \
    197192        SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT) \
    198         SynTree/driver_cfa_cpp-Attribute.$(OBJEXT) \
    199193        Tuples/driver_cfa_cpp-Mutate.$(OBJEXT) \
    200194        Tuples/driver_cfa_cpp-AssignExpand.$(OBJEXT) \
     
    213207am__depfiles_maybe = depfiles
    214208am__mv = mv -f
    215 AM_V_lt = $(am__v_lt_@AM_V@)
    216 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
    217 am__v_lt_0 = --silent
    218209CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    219210        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
    220 AM_V_CXX = $(am__v_CXX_@AM_V@)
    221 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
    222 am__v_CXX_0 = @echo "  CXX   " $@;
    223 AM_V_at = $(am__v_at_@AM_V@)
    224 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    225 am__v_at_0 = @
    226211CXXLD = $(CXX)
    227212CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    228213        -o $@
    229 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    230 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
    231 am__v_CXXLD_0 = @echo "  CXXLD " $@;
    232214@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
    233215LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
    234 AM_V_LEX = $(am__v_LEX_@AM_V@)
    235 am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
    236 am__v_LEX_0 = @echo "  LEX   " $@;
    237216YLWRAP = $(top_srcdir)/automake/ylwrap
    238217@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
    239218YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
    240 AM_V_YACC = $(am__v_YACC_@AM_V@)
    241 am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
    242 am__v_YACC_0 = @echo "  YACC  " $@;
    243219COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    244220        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    245 AM_V_CC = $(am__v_CC_@AM_V@)
    246 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    247 am__v_CC_0 = @echo "  CC    " $@;
    248221CCLD = $(CC)
    249222LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    250 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    251 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    252 am__v_CCLD_0 = @echo "  CCLD  " $@;
    253 AM_V_GEN = $(am__v_GEN_@AM_V@)
    254 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    255 am__v_GEN_0 = @echo "  GEN   " $@;
    256223SOURCES = $(driver_cfa_cpp_SOURCES)
    257224DIST_SOURCES = $(driver_cfa_cpp_SOURCES)
     
    262229ALLOCA = @ALLOCA@
    263230AMTAR = @AMTAR@
    264 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    265231AUTOCONF = @AUTOCONF@
    266232AUTOHEADER = @AUTOHEADER@
     
    270236CC = @CC@
    271237CCDEPMODE = @CCDEPMODE@
    272 CFA_BACKEND_CC = @CFA_BACKEND_CC@
    273238CFA_BINDIR = @CFA_BINDIR@
    274239CFA_INCDIR = @CFA_INCDIR@
     
    289254EGREP = @EGREP@
    290255EXEEXT = @EXEEXT@
     256GCC_PATH = @GCC_PATH@
    291257GREP = @GREP@
    292258INSTALL = @INSTALL@
     
    379345        GenPoly/ScrubTyVars.cc GenPoly/Lvalue.cc GenPoly/Specialize.cc \
    380346        GenPoly/CopyParams.cc GenPoly/FindFunction.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 \
     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 \
    389353        ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \
    390354        ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \
     
    398362        SymTab/Mangler.cc SymTab/Validate.cc SymTab/FixFunction.cc \
    399363        SymTab/ImplementationType.cc SymTab/TypeEquality.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 \
     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 \
    405368        SynTree/VarArgsType.cc SynTree/Constant.cc \
    406369        SynTree/Expression.cc SynTree/TupleExpr.cc \
     
    413376        SynTree/NamedTypeDecl.cc SynTree/TypeDecl.cc \
    414377        SynTree/Initializer.cc SynTree/Visitor.cc SynTree/Mutator.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
     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
    419382MAINTAINERCLEANFILES = Parser/parser.output ${libdir}/${notdir \
    420383        ${cfa_cpplib_PROGRAMS}}
     
    598561        @$(MKDIR_P) InitTweak/$(DEPDIR)
    599562        @: > InitTweak/$(DEPDIR)/$(am__dirstamp)
    600 InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
    601         InitTweak/$(DEPDIR)/$(am__dirstamp)
    602 InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
    603         InitTweak/$(DEPDIR)/$(am__dirstamp)
    604 InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT):  \
    605         InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
    606 InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT):  \
     563InitTweak/driver_cfa_cpp-RemoveInit.$(OBJEXT):  \
    607564        InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
    608565Parser/parser.h: Parser/parser.cc
     
    713670SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT): SymTab/$(am__dirstamp) \
    714671        SymTab/$(DEPDIR)/$(am__dirstamp)
    715 SymTab/driver_cfa_cpp-Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \
    716         SymTab/$(DEPDIR)/$(am__dirstamp)
    717672SynTree/$(am__dirstamp):
    718673        @$(MKDIR_P) SynTree
     
    783738SynTree/driver_cfa_cpp-Mutator.$(OBJEXT): SynTree/$(am__dirstamp) \
    784739        SynTree/$(DEPDIR)/$(am__dirstamp)
    785 SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT):  \
    786         SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    787740SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT):  \
    788741        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    789 SynTree/driver_cfa_cpp-Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \
    790         SynTree/$(DEPDIR)/$(am__dirstamp)
    791742Tuples/$(am__dirstamp):
    792743        @$(MKDIR_P) Tuples
     
    812763driver/cfa-cpp$(EXEEXT): $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_DEPENDENCIES) $(EXTRA_driver_cfa_cpp_DEPENDENCIES) driver/$(am__dirstamp)
    813764        @rm -f driver/cfa-cpp$(EXEEXT)
    814         $(AM_V_CXXLD)$(driver_cfa_cpp_LINK) $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_LDADD) $(LIBS)
     765        $(driver_cfa_cpp_LINK) $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_LDADD) $(LIBS)
    815766
    816767mostlyclean-compile:
     
    841792        -rm -f GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT)
    842793        -rm -f GenPoly/driver_cfa_cpp-Specialize.$(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)
     794        -rm -f InitTweak/driver_cfa_cpp-RemoveInit.$(OBJEXT)
    847795        -rm -f Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT)
    848796        -rm -f Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT)
     
    874822        -rm -f ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT)
    875823        -rm -f ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT)
    876         -rm -f SymTab/driver_cfa_cpp-Autogen.$(OBJEXT)
    877824        -rm -f SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT)
    878825        -rm -f SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT)
     
    881828        -rm -f SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT)
    882829        -rm -f SymTab/driver_cfa_cpp-Validate.$(OBJEXT)
    883         -rm -f SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT)
    884830        -rm -f SynTree/driver_cfa_cpp-AddressExpr.$(OBJEXT)
    885831        -rm -f SynTree/driver_cfa_cpp-AggregateDecl.$(OBJEXT)
     
    887833        -rm -f SynTree/driver_cfa_cpp-ArrayType.$(OBJEXT)
    888834        -rm -f SynTree/driver_cfa_cpp-AttrType.$(OBJEXT)
    889         -rm -f SynTree/driver_cfa_cpp-Attribute.$(OBJEXT)
    890835        -rm -f SynTree/driver_cfa_cpp-BasicType.$(OBJEXT)
    891836        -rm -f SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT)
     
    952897@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po@am__quote@
    953898@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.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@
     899@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-RemoveInit.Po@am__quote@
    958900@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po@am__quote@
    959901@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po@am__quote@
     
    985927@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po@am__quote@
    986928@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@
    988929@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po@am__quote@
    989930@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Po@am__quote@
     
    992933@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Po@am__quote@
    993934@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@
    995935@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po@am__quote@
    996936@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po@am__quote@
     
    998938@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po@am__quote@
    999939@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@
    1001940@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po@am__quote@
    1002941@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po@am__quote@
     
    1034973
    1035974.cc.o:
    1036 @am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
     975@am__fastdepCXX_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    1037976@am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    1038977@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
    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 $@ $<
     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 $@ $<
    1042981
    1043982.cc.obj:
    1044 @am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
     983@am__fastdepCXX_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
    1045984@am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
    1046985@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
    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) '$<'`
     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) '$<'`
    1050989
    1051990driver_cfa_cpp-main.o: 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
     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
    1057996
    1058997driver_cfa_cpp-main.obj: main.cc
    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`
     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`
    10641003
    10651004driver_cfa_cpp-MakeLibCfa.o: 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
     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
    10711010
    10721011driver_cfa_cpp-MakeLibCfa.obj: MakeLibCfa.cc
    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`
     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`
    10781017
    10791018CodeGen/driver_cfa_cpp-Generate.o: 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
     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
    10851024
    10861025CodeGen/driver_cfa_cpp-Generate.obj: CodeGen/Generate.cc
    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`
     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`
    10921031
    10931032CodeGen/driver_cfa_cpp-CodeGenerator.o: 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
     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
    10991038
    11001039CodeGen/driver_cfa_cpp-CodeGenerator.obj: CodeGen/CodeGenerator.cc
    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`
     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`
    11061045
    11071046CodeGen/driver_cfa_cpp-GenType.o: 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
     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
    11131052
    11141053CodeGen/driver_cfa_cpp-GenType.obj: CodeGen/GenType.cc
    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`
     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`
    11201059
    11211060CodeGen/driver_cfa_cpp-FixNames.o: 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
     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
    11271066
    11281067CodeGen/driver_cfa_cpp-FixNames.obj: CodeGen/FixNames.cc
    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`
     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`
    11341073
    11351074CodeGen/driver_cfa_cpp-OperatorTable.o: 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
     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
    11411080
    11421081CodeGen/driver_cfa_cpp-OperatorTable.obj: CodeGen/OperatorTable.cc
    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`
     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`
    11481087
    11491088Common/driver_cfa_cpp-SemanticError.o: 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
     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
    11551094
    11561095Common/driver_cfa_cpp-SemanticError.obj: Common/SemanticError.cc
    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`
     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`
    11621101
    11631102Common/driver_cfa_cpp-UniqueName.o: 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
     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
    11691108
    11701109Common/driver_cfa_cpp-UniqueName.obj: Common/UniqueName.cc
    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`
     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`
    11761115
    11771116ControlStruct/driver_cfa_cpp-LabelGenerator.o: 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
     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
    11831122
    11841123ControlStruct/driver_cfa_cpp-LabelGenerator.obj: ControlStruct/LabelGenerator.cc
    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`
     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`
    11901129
    11911130ControlStruct/driver_cfa_cpp-LabelFixer.o: 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
     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
    11971136
    11981137ControlStruct/driver_cfa_cpp-LabelFixer.obj: ControlStruct/LabelFixer.cc
    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`
     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`
    12041143
    12051144ControlStruct/driver_cfa_cpp-MLEMutator.o: 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
     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
    12111150
    12121151ControlStruct/driver_cfa_cpp-MLEMutator.obj: ControlStruct/MLEMutator.cc
    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`
     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`
    12181157
    12191158ControlStruct/driver_cfa_cpp-CaseRangeMutator.o: 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
     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
    12251164
    12261165ControlStruct/driver_cfa_cpp-CaseRangeMutator.obj: ControlStruct/CaseRangeMutator.cc
    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`
     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`
    12321171
    12331172ControlStruct/driver_cfa_cpp-Mutate.o: 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
     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
    12391178
    12401179ControlStruct/driver_cfa_cpp-Mutate.obj: ControlStruct/Mutate.cc
    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`
     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`
    12461185
    12471186ControlStruct/driver_cfa_cpp-ChooseMutator.o: 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
     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
    12531192
    12541193ControlStruct/driver_cfa_cpp-ChooseMutator.obj: ControlStruct/ChooseMutator.cc
    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`
     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`
    12601199
    12611200ControlStruct/driver_cfa_cpp-ForExprMutator.o: 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
     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
    12671206
    12681207ControlStruct/driver_cfa_cpp-ForExprMutator.obj: ControlStruct/ForExprMutator.cc
    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`
     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`
    12741213
    12751214ControlStruct/driver_cfa_cpp-LabelTypeChecker.o: 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
     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
    12811220
    12821221ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj: ControlStruct/LabelTypeChecker.cc
    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`
     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`
    12881227
    12891228Designators/driver_cfa_cpp-Processor.o: 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
     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
    12951234
    12961235Designators/driver_cfa_cpp-Processor.obj: Designators/Processor.cc
    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`
     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`
    13021241
    13031242GenPoly/driver_cfa_cpp-Box.o: 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
     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
    13091248
    13101249GenPoly/driver_cfa_cpp-Box.obj: GenPoly/Box.cc
    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`
     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`
    13161255
    13171256GenPoly/driver_cfa_cpp-GenPoly.o: 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
     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
    13231262
    13241263GenPoly/driver_cfa_cpp-GenPoly.obj: GenPoly/GenPoly.cc
    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`
     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`
    13301269
    13311270GenPoly/driver_cfa_cpp-PolyMutator.o: 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
     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
    13371276
    13381277GenPoly/driver_cfa_cpp-PolyMutator.obj: GenPoly/PolyMutator.cc
    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`
     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`
    13441283
    13451284GenPoly/driver_cfa_cpp-ScrubTyVars.o: 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
     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
    13511290
    13521291GenPoly/driver_cfa_cpp-ScrubTyVars.obj: GenPoly/ScrubTyVars.cc
    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`
     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`
    13581297
    13591298GenPoly/driver_cfa_cpp-Lvalue.o: 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
     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
    13651304
    13661305GenPoly/driver_cfa_cpp-Lvalue.obj: GenPoly/Lvalue.cc
    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`
     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`
    13721311
    13731312GenPoly/driver_cfa_cpp-Specialize.o: 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
     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
    13791318
    13801319GenPoly/driver_cfa_cpp-Specialize.obj: GenPoly/Specialize.cc
    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`
     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`
    13861325
    13871326GenPoly/driver_cfa_cpp-CopyParams.o: 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
     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
    13931332
    13941333GenPoly/driver_cfa_cpp-CopyParams.obj: GenPoly/CopyParams.cc
    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`
     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`
    14001339
    14011340GenPoly/driver_cfa_cpp-FindFunction.o: 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
     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
    14071346
    14081347GenPoly/driver_cfa_cpp-FindFunction.obj: GenPoly/FindFunction.cc
    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`
     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`
    14141353
    14151354GenPoly/driver_cfa_cpp-DeclMutator.o: 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
     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
    14211360
    14221361GenPoly/driver_cfa_cpp-DeclMutator.obj: GenPoly/DeclMutator.cc
    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 
    1429 InitTweak/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 
    1436 InitTweak/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 
    1443 InitTweak/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 
    1450 InitTweak/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 
    1457 InitTweak/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 
    1464 InitTweak/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 
    1471 InitTweak/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 
    1478 InitTweak/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`
     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
     1368InitTweak/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
     1375InitTweak/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`
    14841381
    14851382Parser/driver_cfa_cpp-parser.o: 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
     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
    14911388
    14921389Parser/driver_cfa_cpp-parser.obj: Parser/parser.cc
    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`
     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`
    14981395
    14991396Parser/driver_cfa_cpp-lex.o: 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
     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
    15051402
    15061403Parser/driver_cfa_cpp-lex.obj: Parser/lex.cc
    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`
     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`
    15121409
    15131410Parser/driver_cfa_cpp-TypedefTable.o: 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
     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
    15191416
    15201417Parser/driver_cfa_cpp-TypedefTable.obj: Parser/TypedefTable.cc
    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`
     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`
    15261423
    15271424Parser/driver_cfa_cpp-ParseNode.o: 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
     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
    15331430
    15341431Parser/driver_cfa_cpp-ParseNode.obj: Parser/ParseNode.cc
    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`
     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`
    15401437
    15411438Parser/driver_cfa_cpp-DeclarationNode.o: 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
     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
    15471444
    15481445Parser/driver_cfa_cpp-DeclarationNode.obj: Parser/DeclarationNode.cc
    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`
     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`
    15541451
    15551452Parser/driver_cfa_cpp-ExpressionNode.o: 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
     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
    15611458
    15621459Parser/driver_cfa_cpp-ExpressionNode.obj: Parser/ExpressionNode.cc
    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`
     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`
    15681465
    15691466Parser/driver_cfa_cpp-StatementNode.o: 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
     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
    15751472
    15761473Parser/driver_cfa_cpp-StatementNode.obj: Parser/StatementNode.cc
    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`
     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`
    15821479
    15831480Parser/driver_cfa_cpp-InitializerNode.o: 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
     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
    15891486
    15901487Parser/driver_cfa_cpp-InitializerNode.obj: Parser/InitializerNode.cc
    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`
     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`
    15961493
    15971494Parser/driver_cfa_cpp-TypeData.o: 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
     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
    16031500
    16041501Parser/driver_cfa_cpp-TypeData.obj: Parser/TypeData.cc
    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`
     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`
    16101507
    16111508Parser/driver_cfa_cpp-LinkageSpec.o: 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
     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
    16171514
    16181515Parser/driver_cfa_cpp-LinkageSpec.obj: Parser/LinkageSpec.cc
    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`
     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`
    16241521
    16251522Parser/driver_cfa_cpp-parseutility.o: 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
     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
    16311528
    16321529Parser/driver_cfa_cpp-parseutility.obj: Parser/parseutility.cc
    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`
     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`
    16381535
    16391536Parser/driver_cfa_cpp-Parser.o: 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
     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
    16451542
    16461543Parser/driver_cfa_cpp-Parser.obj: Parser/Parser.cc
    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`
     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`
    16521549
    16531550ResolvExpr/driver_cfa_cpp-AlternativeFinder.o: 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
     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
    16591556
    16601557ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj: ResolvExpr/AlternativeFinder.cc
    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`
     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`
    16661563
    16671564ResolvExpr/driver_cfa_cpp-Alternative.o: 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
     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
    16731570
    16741571ResolvExpr/driver_cfa_cpp-Alternative.obj: ResolvExpr/Alternative.cc
    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`
     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`
    16801577
    16811578ResolvExpr/driver_cfa_cpp-Unify.o: 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
     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
    16871584
    16881585ResolvExpr/driver_cfa_cpp-Unify.obj: ResolvExpr/Unify.cc
    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`
     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`
    16941591
    16951592ResolvExpr/driver_cfa_cpp-PtrsAssignable.o: 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
     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
    17011598
    17021599ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj: ResolvExpr/PtrsAssignable.cc
    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`
     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`
    17081605
    17091606ResolvExpr/driver_cfa_cpp-CommonType.o: 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
     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
    17151612
    17161613ResolvExpr/driver_cfa_cpp-CommonType.obj: ResolvExpr/CommonType.cc
    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`
     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`
    17221619
    17231620ResolvExpr/driver_cfa_cpp-ConversionCost.o: 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
     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
    17291626
    17301627ResolvExpr/driver_cfa_cpp-ConversionCost.obj: ResolvExpr/ConversionCost.cc
    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`
     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`
    17361633
    17371634ResolvExpr/driver_cfa_cpp-CastCost.o: 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
     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
    17431640
    17441641ResolvExpr/driver_cfa_cpp-CastCost.obj: ResolvExpr/CastCost.cc
    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`
     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`
    17501647
    17511648ResolvExpr/driver_cfa_cpp-PtrsCastable.o: 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
     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
    17571654
    17581655ResolvExpr/driver_cfa_cpp-PtrsCastable.obj: ResolvExpr/PtrsCastable.cc
    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`
     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`
    17641661
    17651662ResolvExpr/driver_cfa_cpp-AdjustExprType.o: 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
     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
    17711668
    17721669ResolvExpr/driver_cfa_cpp-AdjustExprType.obj: ResolvExpr/AdjustExprType.cc
    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`
     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`
    17781675
    17791676ResolvExpr/driver_cfa_cpp-AlternativePrinter.o: 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
     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
    17851682
    17861683ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj: ResolvExpr/AlternativePrinter.cc
    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`
     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`
    17921689
    17931690ResolvExpr/driver_cfa_cpp-Resolver.o: 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
     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
    17991696
    18001697ResolvExpr/driver_cfa_cpp-Resolver.obj: ResolvExpr/Resolver.cc
    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`
     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`
    18061703
    18071704ResolvExpr/driver_cfa_cpp-ResolveTypeof.o: 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
     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
    18131710
    18141711ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj: ResolvExpr/ResolveTypeof.cc
    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`
     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`
    18201717
    18211718ResolvExpr/driver_cfa_cpp-RenameVars.o: 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
     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
    18271724
    18281725ResolvExpr/driver_cfa_cpp-RenameVars.obj: ResolvExpr/RenameVars.cc
    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`
     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`
    18341731
    18351732ResolvExpr/driver_cfa_cpp-FindOpenVars.o: 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
     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
    18411738
    18421739ResolvExpr/driver_cfa_cpp-FindOpenVars.obj: ResolvExpr/FindOpenVars.cc
    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`
     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`
    18481745
    18491746ResolvExpr/driver_cfa_cpp-PolyCost.o: 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
     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
    18551752
    18561753ResolvExpr/driver_cfa_cpp-PolyCost.obj: ResolvExpr/PolyCost.cc
    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`
     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`
    18621759
    18631760ResolvExpr/driver_cfa_cpp-Occurs.o: 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
     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
    18691766
    18701767ResolvExpr/driver_cfa_cpp-Occurs.obj: ResolvExpr/Occurs.cc
    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`
     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`
    18761773
    18771774ResolvExpr/driver_cfa_cpp-TypeEnvironment.o: 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
     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
    18831780
    18841781ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj: ResolvExpr/TypeEnvironment.cc
    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`
     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`
    18901787
    18911788SymTab/driver_cfa_cpp-Indexer.o: 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
     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
    18971794
    18981795SymTab/driver_cfa_cpp-Indexer.obj: SymTab/Indexer.cc
    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`
     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`
    19041801
    19051802SymTab/driver_cfa_cpp-Mangler.o: 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
     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
    19111808
    19121809SymTab/driver_cfa_cpp-Mangler.obj: SymTab/Mangler.cc
    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`
     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`
    19181815
    19191816SymTab/driver_cfa_cpp-Validate.o: 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
     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
    19251822
    19261823SymTab/driver_cfa_cpp-Validate.obj: SymTab/Validate.cc
    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`
     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`
    19321829
    19331830SymTab/driver_cfa_cpp-FixFunction.o: 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
     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
    19391836
    19401837SymTab/driver_cfa_cpp-FixFunction.obj: SymTab/FixFunction.cc
    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`
     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`
    19461843
    19471844SymTab/driver_cfa_cpp-ImplementationType.o: 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
     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
    19531850
    19541851SymTab/driver_cfa_cpp-ImplementationType.obj: SymTab/ImplementationType.cc
    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`
     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`
    19601857
    19611858SymTab/driver_cfa_cpp-TypeEquality.o: 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
     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
    19671864
    19681865SymTab/driver_cfa_cpp-TypeEquality.obj: SymTab/TypeEquality.cc
    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 
    1975 SymTab/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 
    1982 SymTab/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`
     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`
    19881871
    19891872SynTree/driver_cfa_cpp-Type.o: 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
     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
    19951878
    19961879SynTree/driver_cfa_cpp-Type.obj: SynTree/Type.cc
    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`
     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`
    20021885
    20031886SynTree/driver_cfa_cpp-VoidType.o: 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
     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
    20091892
    20101893SynTree/driver_cfa_cpp-VoidType.obj: SynTree/VoidType.cc
    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`
     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`
    20161899
    20171900SynTree/driver_cfa_cpp-BasicType.o: 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
     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
    20231906
    20241907SynTree/driver_cfa_cpp-BasicType.obj: SynTree/BasicType.cc
    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`
     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`
    20301913
    20311914SynTree/driver_cfa_cpp-PointerType.o: 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
     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
    20371920
    20381921SynTree/driver_cfa_cpp-PointerType.obj: SynTree/PointerType.cc
    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`
     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`
    20441927
    20451928SynTree/driver_cfa_cpp-ArrayType.o: 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
     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
    20511934
    20521935SynTree/driver_cfa_cpp-ArrayType.obj: SynTree/ArrayType.cc
    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`
     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`
    20581941
    20591942SynTree/driver_cfa_cpp-FunctionType.o: 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
     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
    20651948
    20661949SynTree/driver_cfa_cpp-FunctionType.obj: SynTree/FunctionType.cc
    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`
     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`
    20721955
    20731956SynTree/driver_cfa_cpp-ReferenceToType.o: 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
     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
    20791962
    20801963SynTree/driver_cfa_cpp-ReferenceToType.obj: SynTree/ReferenceToType.cc
    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`
     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`
    20861969
    20871970SynTree/driver_cfa_cpp-TupleType.o: 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
     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
    20931976
    20941977SynTree/driver_cfa_cpp-TupleType.obj: SynTree/TupleType.cc
    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`
     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`
    21001983
    21011984SynTree/driver_cfa_cpp-TypeofType.o: 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
     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
    21071990
    21081991SynTree/driver_cfa_cpp-TypeofType.obj: SynTree/TypeofType.cc
    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`
     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`
    21141997
    21151998SynTree/driver_cfa_cpp-AttrType.o: 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
     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
    21212004
    21222005SynTree/driver_cfa_cpp-AttrType.obj: SynTree/AttrType.cc
    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`
     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`
    21282011
    21292012SynTree/driver_cfa_cpp-VarArgsType.o: 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
     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
    21352018
    21362019SynTree/driver_cfa_cpp-VarArgsType.obj: SynTree/VarArgsType.cc
    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`
     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`
    21422025
    21432026SynTree/driver_cfa_cpp-Constant.o: 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
     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
    21492032
    21502033SynTree/driver_cfa_cpp-Constant.obj: SynTree/Constant.cc
    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`
     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`
    21562039
    21572040SynTree/driver_cfa_cpp-Expression.o: 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
     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
    21632046
    21642047SynTree/driver_cfa_cpp-Expression.obj: SynTree/Expression.cc
    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`
     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`
    21702053
    21712054SynTree/driver_cfa_cpp-TupleExpr.o: 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
     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
    21772060
    21782061SynTree/driver_cfa_cpp-TupleExpr.obj: SynTree/TupleExpr.cc
    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`
     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`
    21842067
    21852068SynTree/driver_cfa_cpp-CommaExpr.o: 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
     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
    21912074
    21922075SynTree/driver_cfa_cpp-CommaExpr.obj: SynTree/CommaExpr.cc
    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`
     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`
    21982081
    21992082SynTree/driver_cfa_cpp-TypeExpr.o: 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
     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
    22052088
    22062089SynTree/driver_cfa_cpp-TypeExpr.obj: SynTree/TypeExpr.cc
    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`
     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`
    22122095
    22132096SynTree/driver_cfa_cpp-ApplicationExpr.o: 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
     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
    22192102
    22202103SynTree/driver_cfa_cpp-ApplicationExpr.obj: SynTree/ApplicationExpr.cc
    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`
     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`
    22262109
    22272110SynTree/driver_cfa_cpp-AddressExpr.o: 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
     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
    22332116
    22342117SynTree/driver_cfa_cpp-AddressExpr.obj: SynTree/AddressExpr.cc
    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`
     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`
    22402123
    22412124SynTree/driver_cfa_cpp-Statement.o: 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
     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
    22472130
    22482131SynTree/driver_cfa_cpp-Statement.obj: SynTree/Statement.cc
    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`
     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`
    22542137
    22552138SynTree/driver_cfa_cpp-CompoundStmt.o: 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
     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
    22612144
    22622145SynTree/driver_cfa_cpp-CompoundStmt.obj: SynTree/CompoundStmt.cc
    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`
     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`
    22682151
    22692152SynTree/driver_cfa_cpp-DeclStmt.o: 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
     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
    22752158
    22762159SynTree/driver_cfa_cpp-DeclStmt.obj: SynTree/DeclStmt.cc
    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`
     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`
    22822165
    22832166SynTree/driver_cfa_cpp-Declaration.o: 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
     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
    22892172
    22902173SynTree/driver_cfa_cpp-Declaration.obj: SynTree/Declaration.cc
    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`
     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`
    22962179
    22972180SynTree/driver_cfa_cpp-DeclarationWithType.o: 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
     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
    23032186
    23042187SynTree/driver_cfa_cpp-DeclarationWithType.obj: SynTree/DeclarationWithType.cc
    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`
     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`
    23102193
    23112194SynTree/driver_cfa_cpp-ObjectDecl.o: 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
     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
    23172200
    23182201SynTree/driver_cfa_cpp-ObjectDecl.obj: SynTree/ObjectDecl.cc
    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`
     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`
    23242207
    23252208SynTree/driver_cfa_cpp-FunctionDecl.o: 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
     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
    23312214
    23322215SynTree/driver_cfa_cpp-FunctionDecl.obj: SynTree/FunctionDecl.cc
    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`
     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`
    23382221
    23392222SynTree/driver_cfa_cpp-AggregateDecl.o: 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
     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
    23452228
    23462229SynTree/driver_cfa_cpp-AggregateDecl.obj: SynTree/AggregateDecl.cc
    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`
     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`
    23522235
    23532236SynTree/driver_cfa_cpp-NamedTypeDecl.o: 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
     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
    23592242
    23602243SynTree/driver_cfa_cpp-NamedTypeDecl.obj: SynTree/NamedTypeDecl.cc
    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`
     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`
    23662249
    23672250SynTree/driver_cfa_cpp-TypeDecl.o: 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
     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
    23732256
    23742257SynTree/driver_cfa_cpp-TypeDecl.obj: SynTree/TypeDecl.cc
    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`
     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`
    23802263
    23812264SynTree/driver_cfa_cpp-Initializer.o: 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
     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
    23872270
    23882271SynTree/driver_cfa_cpp-Initializer.obj: SynTree/Initializer.cc
    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`
     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`
    23942277
    23952278SynTree/driver_cfa_cpp-Visitor.o: 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
     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
    24012284
    24022285SynTree/driver_cfa_cpp-Visitor.obj: SynTree/Visitor.cc
    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`
     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`
    24082291
    24092292SynTree/driver_cfa_cpp-Mutator.o: 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
     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
    24152298
    24162299SynTree/driver_cfa_cpp-Mutator.obj: SynTree/Mutator.cc
    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 
    2423 SynTree/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 
    2430 SynTree/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`
     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`
    24362305
    24372306SynTree/driver_cfa_cpp-TypeSubstitution.o: 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
     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
    24432312
    24442313SynTree/driver_cfa_cpp-TypeSubstitution.obj: SynTree/TypeSubstitution.cc
    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 
    2451 SynTree/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 
    2458 SynTree/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`
     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`
    24642319
    24652320Tuples/driver_cfa_cpp-Mutate.o: 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
     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
    24712326
    24722327Tuples/driver_cfa_cpp-Mutate.obj: Tuples/Mutate.cc
    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`
     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`
    24782333
    24792334Tuples/driver_cfa_cpp-AssignExpand.o: 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
     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
    24852340
    24862341Tuples/driver_cfa_cpp-AssignExpand.obj: Tuples/AssignExpand.cc
    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`
     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`
    24922347
    24932348Tuples/driver_cfa_cpp-FunctionFixer.o: 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
     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
    24992354
    25002355Tuples/driver_cfa_cpp-FunctionFixer.obj: Tuples/FunctionFixer.cc
    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`
     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`
    25062361
    25072362Tuples/driver_cfa_cpp-TupleAssignment.o: 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
     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
    25132368
    25142369Tuples/driver_cfa_cpp-TupleAssignment.obj: Tuples/TupleAssignment.cc
    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`
     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`
    25202375
    25212376Tuples/driver_cfa_cpp-FunctionChecker.o: 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
     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
    25272382
    25282383Tuples/driver_cfa_cpp-FunctionChecker.obj: Tuples/FunctionChecker.cc
    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`
     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`
    25342389
    25352390Tuples/driver_cfa_cpp-NameMatcher.o: 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
     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
    25412396
    25422397Tuples/driver_cfa_cpp-NameMatcher.obj: Tuples/NameMatcher.cc
    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`
     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`
    25482403
    25492404.ll.cc:
    2550         $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
     2405        $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
    25512406
    25522407.yy.cc:
    2553         $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
     2408        $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
    25542409
    25552410ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  • src/Parser/DeclarationNode.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Thu Apr 14 15:38:09 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Apr 13 16:53:17 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 
    10199        } // if
    102100
     
    355353        } // if
    356354}
    357 
     355         
    358356DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
    359357        if ( q ) {
     
    506504                assert( false );
    507505        } // switch
    508 
     506       
    509507        return this;
    510508}
     
    617615                assert( a->type->kind == TypeData::Array );
    618616                TypeData *lastArray = findLast( a->type );
    619                 if ( type ) {
     617                if ( type ) { 
    620618                        switch ( type->kind ) {
    621619                          case TypeData::Aggregate:
     
    661659        } // if
    662660}
    663 
     661       
    664662DeclarationNode *DeclarationNode::addIdList( DeclarationNode *ids ) {
    665663        type = addIdListToType( type, ids );
     
    866864Type *DeclarationNode::buildType() const {
    867865        assert( type );
    868 
     866 
    869867        switch ( type->kind ) {
    870868          case TypeData::Enum:
  • src/Parser/ExpressionNode.cc

    rf80e0218 r1b5c81ed  
    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 : Mon Jun 13 14:46:17 2016
    13 // Update Count     : 307
    14 //
     12// Last Modified On : Fri Apr  8 15:43:05 2016
     13// Update Count     : 296
     14// 
    1515
    1616#include <cassert>
     
    3232using namespace std;
    3333
    34 ExpressionNode::ExpressionNode() : ParseNode() {}
    35 
    36 ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ) {}
    37 
    38 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {
     34ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
     35
     36ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ), argName( 0 ) {}
     37
     38ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
    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 = maybeBuild<Expression>(get_argName());
     346        Expression * ret = get_argName()->build();
    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", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&",
     391        "SizeOf", "AlignOf", "OffsetOf", "Attr", "CompLit", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&",
    392392        "?|?", "?&?", "?^?", "Cast", "?<<?", "?>>?", "?<?", "?>?", "?<=?", "?>=?", "?==?", "?!=?",
    393393        "?=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",
     
    440440}
    441441
    442 CompositeExprNode::CompositeExprNode( const CompositeExprNode &other ) : ExpressionNode( other ), function( maybeClone( other.function ) ), arguments( 0 ) {
     442CompositeExprNode::CompositeExprNode( const CompositeExprNode &other ) : ExpressionNode( other ), function( maybeClone( other.function ) ) {
    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( maybeBuild<Expression>(function), args, maybeBuild< Expression >( get_argName() ));
     468                return new UntypedExpr( function->build(), args, maybeBuild< Expression >( get_argName() ));
    469469        } // if
    470470
     
    550550                        if ( dynamic_cast< VoidType* >( targetType ) ) {
    551551                                delete targetType;
    552                                 return new CastExpr( maybeBuild<Expression>(expr_node), maybeBuild< Expression >( get_argName() ) );
     552                                return new CastExpr( expr_node->build(), maybeBuild< Expression >( get_argName() ) );
    553553                        } else {
    554                                 return new CastExpr( maybeBuild<Expression>(expr_node),targetType, maybeBuild< Expression >( get_argName() ) );
     554                                return new CastExpr( expr_node->build(),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( maybeBuild<Expression>(var), ( Expression*)0);
     623                                return new AttrExpr( var->build(), ( Expression*)0);
    624624                        } else if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args()->get_link()) ) {
    625                                 return new AttrExpr( maybeBuild<Expression>(var), arg->get_decl()->buildType());
     625                                return new AttrExpr( var->build(), arg->get_decl()->buildType());
    626626                        } else {
    627                                 return new AttrExpr( maybeBuild<Expression>(var), args.back());
    628                         } // if
    629                 }
     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
    630633          case OperatorNode::Or:
    631634          case OperatorNode::And:
     
    716719
    717720Expression *AsmExprNode::build() const {
    718         return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)maybeBuild<Expression>(constraint), maybeBuild<Expression>(operand) );
     721        return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)constraint->build(), operand->build() );
    719722}
    720723
     
    793796
    794797Expression *ValofExprNode::build() const {
    795         return new UntypedValofExpr ( maybeBuild<Statement>(get_body()), maybeBuild< Expression >( get_argName() ) );
     798        return new UntypedValofExpr ( get_body()->build(), maybeBuild< Expression >( get_argName() ) );
    796799}
    797800
     
    905908
    906909Expression *CompoundLiteralNode::build() const {
    907         Declaration * newDecl = maybeBuild<Declaration>(type); // compound literal type
     910        Declaration * newDecl = type->build();                          // compound literal type
    908911        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
    909                 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
     912                return new CompoundLiteralExpr( newDeclWithType->get_type(), kids->build() );
    910913        // these types do not have associated type information
    911914        } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
    912                 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );
     915                return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), kids->build() );
    913916        } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
    914                 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );
     917                return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), kids->build() );
    915918        } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
    916                 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );
     919                return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), kids->build() );
    917920        } else {
    918921                assert( false );
  • src/Parser/InitializerNode.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Thu Jan 07 13:32:57 2016
    13 // Update Count     : 13
    14 //
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Oct  8 17:18:55 2015
     13// Update Count     : 4
     14// 
    1515
    1616#include <cassert>
     
    2323
    2424InitializerNode::InitializerNode( ExpressionNode *_expr, bool aggrp, ExpressionNode *des )
    25         : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
     25        : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ) {
    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 ), maybeConstructed( true ) {
     34        : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ) {
    3535        if ( init != 0 )
    3636                set_link(init);
     
    9191                } // if
    9292
    93                 return new ListInit( initlist, designlist, maybeConstructed );
     93                return new ListInit( initlist, designlist );
    9494        } else {
    9595                std::list< Expression *> designators;
     
    9999
    100100                if ( get_expression() != 0)
    101                         return new SingleInit( get_expression()->build(), designators, maybeConstructed );
     101                        return new SingleInit( get_expression()->build(), designators );
    102102        } // if
    103103
  • src/Parser/ParseNode.h

    rf80e0218 r1b5c81ed  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:28:16 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 27 23:28:10 2016
    13 // Update Count     : 242
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Mon Apr 11 11:50:52 2016
     13// Update Count     : 205
    1414//
    1515
     
    2020#include <list>
    2121#include <iterator>
    22 #include <memory>
    2322
    2423#include "Common/utility.h"
    2524#include "Parser/LinkageSpec.h"
    2625#include "SynTree/Type.h"
    27 #include "SynTree/Expression.h"
    2826//#include "SynTree/Declaration.h"
    2927#include "Common/UniqueName.h"
    30 #include "SynTree/Label.h"
    3128
    3229class ExpressionNode;
     
    8279        ExpressionNode *set_argName( const std::string *aName );
    8380        ExpressionNode *set_argName( ExpressionNode *aDesignator );
    84         bool get_extension() const { return extension; }
    85         ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
    8681
    8782        virtual void print( std::ostream &, int indent = 0) const = 0;
     
    9287        void printDesignation ( std::ostream &, int indent = 0) const;
    9388  private:
    94         ExpressionNode *argName = 0;
    95         bool extension = false;
    96 };
    97 
    98 template< typename T >
    99 struct 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         }
     89        ExpressionNode *argName;
    10990};
    11091
     
    198179                                Cond, NCond,
    199180                                // diadic
    200                                 SizeOf, AlignOf, OffsetOf, Attr, Plus, Minus, Mul, Div, Mod, Or, And,
     181                                SizeOf, AlignOf, OffsetOf, Attr, CompLit, Plus, Minus, Mul, Div, Mod, Or, And,
    201182                                BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq,
    202183                                Assign, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,
     
    204185                                // monadic
    205186                                UnPlus, UnMinus, AddressOf, PointTo, Neg, BitNeg, Incr, IncrPost, Decr, DecrPost, LabelAddress,
    206                                 Ctor, Dtor,
    207187        };
    208188
     
    285265        virtual void printOneLine( std::ostream &, int indent = 0) const;
    286266
    287         const std::list< Label > &get_labels() const { return labels; };
     267        const std::list< std::string > &get_labels() const { return labels; };
    288268        void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
    289269  private:
    290         std::list< Label > labels;
     270        std::list< std::string > labels;
    291271};
    292272
     
    426406        ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }
    427407
    428         bool get_extension() const { return extension; }
    429         DeclarationNode *set_extension( bool exten ) { extension = exten; return this; }
    430 
    431408        DeclarationNode();
    432409        ~DeclarationNode();
     
    444421        bool hasEllipsis;
    445422        LinkageSpec::Type linkage;
    446         bool extension = false;
    447423
    448424        static UniqueName anonymous;
     
    481457        void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; }
    482458        void setCatchRest( bool newVal ) { isCatchRest = newVal; }
    483 
    484         bool get_extension() const { return extension; }
    485         StatementNode *set_extension( bool exten ) { extension = exten; return this; }
    486459
    487460        std::string get_target() const;
     
    503476        DeclarationNode *decl;
    504477        bool isCatchRest;
    505         bool extension = false;
    506478}; // StatementNode
    507479
     
    533505        ExpressionNode *output, *input;
    534506        ConstantNode *clobber;
    535         std::list< Label > gotolabels;
     507        std::list<std::string> gotolabels;
    536508};
    537509
     
    552524        InitializerNode *set_designators( ExpressionNode *des ) { designator = des; return this; }
    553525        ExpressionNode *get_designators() const { return designator; }
    554 
    555         InitializerNode *set_maybeConstructed( bool value ) { maybeConstructed = value; return this; }
    556         bool get_maybeConstructed() const { return maybeConstructed; }
    557526
    558527        InitializerNode *next_init() const { return kids; }
     
    567536        ExpressionNode *designator; // may be list
    568537        InitializerNode *kids;
    569         bool maybeConstructed;
    570538};
    571539
     
    601569        while ( cur ) {
    602570                try {
    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 ) );
     571                        SynTreeType *result = dynamic_cast< SynTreeType *>( cur->build() );
    605572                        if ( result ) {
    606573                                *out++ = result;
  • src/Parser/StatementNode.cc

    rf80e0218 r1b5c81ed  
    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 Jun  9 14:18:46 2016
    13 // Update Count     : 132
     12// Last Modified On : Thu Jul 30 14:39:39 2015
     13// Update Count     : 130
    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( maybeBuild<Expression>(get_control()) ), thenb, elseb );
     224                        return new IfStmt( labs, notZeroExpr( get_control()->build() ), thenb, elseb );
    225225                }
    226226          case While:
    227227                assert( branches.size() == 1 );
    228                 return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );
     228                return new WhileStmt( labs, notZeroExpr( get_control()->build() ), branches.front() );
    229229          case Do:
    230230                assert( branches.size() == 1 );
    231                 return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );
     231                return new WhileStmt( labs, notZeroExpr( get_control()->build() ), branches.front(), true );
    232232          case For:
    233233                {
     
    244244                        Expression *cond = 0;
    245245                        if ( ctl->get_condition() != 0 )
    246                                 cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );
     246                                cond = notZeroExpr( ctl->get_condition()->build() );
    247247
    248248                        Expression *incr = 0;
    249249                        if ( ctl->get_change() != 0 )
    250                                 incr = maybeBuild<Expression>(ctl->get_change());
     250                                incr = ctl->get_change()->build();
    251251
    252252                        return new ForStmt( labs, init, cond, incr, branches.front() );
    253253                }
    254254          case Switch:
    255                 return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
     255                return new SwitchStmt( labs, get_control()->build(), branches );
    256256          case Choose:
    257                 return new ChooseStmt( labs, maybeBuild<Expression>(get_control()), branches );
     257                return new ChooseStmt( labs, get_control()->build(), branches );
    258258          case Fallthru:
    259259                return new FallthruStmt( labs );
    260           case Case:
    261                 return new CaseStmt( labs, maybeBuild<Expression>(get_control()), branches );
     260          case Case: 
     261                return new CaseStmt( labs, get_control()->build(), 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, maybeBuild<Expression>(get_control()), BranchStmt::Goto );
     268                                return new BranchStmt( labs, get_control()->build(), 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<Label>::const_iterator i = gotolabels.begin();; ) {
     396                for ( std::list<std::string>::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

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Wed Apr 06 16:57:53 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Mar  2 17:26:45 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)
    469451                        FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    470452                        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 ) );
     
    920902                if ( cur->get_enumeratorValue() != NULL ) {
    921903                        ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members);
    922                         member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) );
     904                        member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ) ) );
    923905                } // if
    924906        } // for
  • src/Parser/lex.cc

    rf80e0218 r1b5c81ed  
    14671467 * Created On       : Sat Sep 22 08:58:10 2001
    14681468 * Last Modified By : Peter A. Buhr
    1469  * Last Modified On : Thu Jun 23 07:29:30 2016
    1470  * Update Count     : 457
     1469 * Last Modified On : Mon Mar 21 23:33:46 2016
     1470 * Update Count     : 450
    14711471 */
    14721472#line 20 "lex.ll"
     
    15021502
    15031503void rm_underscore() {
    1504         // Remove underscores in numeric constant by copying the non-underscore characters to the front of the string.
    1505         yyleng = 0;
     1504        // remove underscores in numeric constant
     1505        int j = 0;
    15061506        for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
    15071507                if ( yytext[i] != '_' ) {
    1508                         yytext[yyleng] = yytext[i];
    1509                         yyleng += 1;
     1508                        yytext[j] = yytext[i];
     1509                        j += 1;
    15101510                } // if
    15111511        } // for
     1512        yyleng = j;
    15121513        yytext[yyleng] = '\0';
    15131514}
     
    15221523// ' stop highlighting
    15231524// display/white-space characters
    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"
     1525// operators
     1526
     1527
     1528
     1529
     1530#line 1531 "Parser/lex.cc"
    15321531
    15331532#define INITIAL 0
     
    17211720        register int yy_act;
    17221721   
    1723 #line 138 "lex.ll"
     1722#line 139 "lex.ll"
    17241723
    17251724                                   /* line directives */
    1726 #line 1727 "Parser/lex.cc"
     1725#line 1726 "Parser/lex.cc"
    17271726
    17281727        if ( !(yy_init) )
     
    18211820/* rule 1 can match eol */
    18221821YY_RULE_SETUP
    1823 #line 140 "lex.ll"
     1822#line 141 "lex.ll"
    18241823{
    18251824        /* " stop highlighting */
     
    18481847/* rule 2 can match eol */
    18491848YY_RULE_SETUP
    1850 #line 163 "lex.ll"
     1849#line 164 "lex.ll"
    18511850;
    18521851        YY_BREAK
     
    18541853case 3:
    18551854YY_RULE_SETUP
    1856 #line 166 "lex.ll"
     1855#line 167 "lex.ll"
    18571856{ BEGIN COMMENT; }
    18581857        YY_BREAK
     
    18601859/* rule 4 can match eol */
    18611860YY_RULE_SETUP
    1862 #line 167 "lex.ll"
     1861#line 168 "lex.ll"
    18631862;
    18641863        YY_BREAK
    18651864case 5:
    18661865YY_RULE_SETUP
    1867 #line 168 "lex.ll"
     1866#line 169 "lex.ll"
    18681867{ BEGIN 0; }
    18691868        YY_BREAK
     
    18721871/* rule 6 can match eol */
    18731872YY_RULE_SETUP
    1874 #line 171 "lex.ll"
     1873#line 172 "lex.ll"
    18751874;
    18761875        YY_BREAK
     
    18781877case 7:
    18791878YY_RULE_SETUP
    1880 #line 174 "lex.ll"
    1881 { WHITE_RETURN(' '); }
    1882         YY_BREAK
    1883 case 8:
    1884 YY_RULE_SETUP
    18851879#line 175 "lex.ll"
    18861880{ WHITE_RETURN(' '); }
    18871881        YY_BREAK
     1882case 8:
     1883YY_RULE_SETUP
     1884#line 176 "lex.ll"
     1885{ WHITE_RETURN(' '); }
     1886        YY_BREAK
    18881887case 9:
    18891888/* rule 9 can match eol */
    18901889YY_RULE_SETUP
    1891 #line 176 "lex.ll"
     1890#line 177 "lex.ll"
    18921891{ NEWLINE_RETURN(); }
    18931892        YY_BREAK
     
    18951894case 10:
    18961895YY_RULE_SETUP
    1897 #line 179 "lex.ll"
     1896#line 180 "lex.ll"
    18981897{ KEYWORD_RETURN(ALIGNAS); }                    // C11
    18991898        YY_BREAK
    19001899case 11:
    19011900YY_RULE_SETUP
    1902 #line 180 "lex.ll"
     1901#line 181 "lex.ll"
    19031902{ KEYWORD_RETURN(ALIGNOF); }                    // C11
    19041903        YY_BREAK
    19051904case 12:
    1906 YY_RULE_SETUP
    1907 #line 181 "lex.ll"
    1908 { KEYWORD_RETURN(ALIGNOF); }                    // GCC
    1909         YY_BREAK
    1910 case 13:
    19111905YY_RULE_SETUP
    19121906#line 182 "lex.ll"
    19131907{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    19141908        YY_BREAK
     1909case 13:
     1910YY_RULE_SETUP
     1911#line 183 "lex.ll"
     1912{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
     1913        YY_BREAK
    19151914case 14:
    19161915YY_RULE_SETUP
    1917 #line 183 "lex.ll"
     1916#line 184 "lex.ll"
    19181917{ KEYWORD_RETURN(ASM); }
    19191918        YY_BREAK
    19201919case 15:
    1921 YY_RULE_SETUP
    1922 #line 184 "lex.ll"
    1923 { KEYWORD_RETURN(ASM); }                                // GCC
    1924         YY_BREAK
    1925 case 16:
    19261920YY_RULE_SETUP
    19271921#line 185 "lex.ll"
    19281922{ KEYWORD_RETURN(ASM); }                                // GCC
    19291923        YY_BREAK
     1924case 16:
     1925YY_RULE_SETUP
     1926#line 186 "lex.ll"
     1927{ KEYWORD_RETURN(ASM); }                                // GCC
     1928        YY_BREAK
    19301929case 17:
    19311930YY_RULE_SETUP
    1932 #line 186 "lex.ll"
     1931#line 187 "lex.ll"
    19331932{ KEYWORD_RETURN(AT); }                                 // CFA
    19341933        YY_BREAK
    19351934case 18:
    19361935YY_RULE_SETUP
    1937 #line 187 "lex.ll"
     1936#line 188 "lex.ll"
    19381937{ KEYWORD_RETURN(ATOMIC); }                             // C11
    19391938        YY_BREAK
    19401939case 19:
    1941 YY_RULE_SETUP
    1942 #line 188 "lex.ll"
    1943 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    1944         YY_BREAK
    1945 case 20:
    19461940YY_RULE_SETUP
    19471941#line 189 "lex.ll"
    19481942{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    19491943        YY_BREAK
     1944case 20:
     1945YY_RULE_SETUP
     1946#line 190 "lex.ll"
     1947{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1948        YY_BREAK
    19501949case 21:
    19511950YY_RULE_SETUP
    1952 #line 190 "lex.ll"
     1951#line 191 "lex.ll"
    19531952{ KEYWORD_RETURN(AUTO); }
    19541953        YY_BREAK
    19551954case 22:
    19561955YY_RULE_SETUP
    1957 #line 191 "lex.ll"
     1956#line 192 "lex.ll"
    19581957{ KEYWORD_RETURN(BOOL); }                               // C99
    19591958        YY_BREAK
    19601959case 23:
    19611960YY_RULE_SETUP
    1962 #line 192 "lex.ll"
     1961#line 193 "lex.ll"
    19631962{ KEYWORD_RETURN(BREAK); }
    19641963        YY_BREAK
    19651964case 24:
    19661965YY_RULE_SETUP
    1967 #line 193 "lex.ll"
     1966#line 194 "lex.ll"
    19681967{ KEYWORD_RETURN(CASE); }
    19691968        YY_BREAK
    19701969case 25:
    19711970YY_RULE_SETUP
    1972 #line 194 "lex.ll"
     1971#line 195 "lex.ll"
    19731972{ KEYWORD_RETURN(CATCH); }                              // CFA
    19741973        YY_BREAK
    19751974case 26:
    19761975YY_RULE_SETUP
    1977 #line 195 "lex.ll"
     1976#line 196 "lex.ll"
    19781977{ KEYWORD_RETURN(CATCHRESUME); }                // CFA
    19791978        YY_BREAK
    19801979case 27:
    19811980YY_RULE_SETUP
    1982 #line 196 "lex.ll"
     1981#line 197 "lex.ll"
    19831982{ KEYWORD_RETURN(CHAR); }
    19841983        YY_BREAK
    19851984case 28:
    19861985YY_RULE_SETUP
    1987 #line 197 "lex.ll"
     1986#line 198 "lex.ll"
    19881987{ KEYWORD_RETURN(CHOOSE); }                             // CFA
    19891988        YY_BREAK
    19901989case 29:
    19911990YY_RULE_SETUP
    1992 #line 198 "lex.ll"
     1991#line 199 "lex.ll"
    19931992{ KEYWORD_RETURN(COMPLEX); }                    // C99
    19941993        YY_BREAK
    19951994case 30:
    1996 YY_RULE_SETUP
    1997 #line 199 "lex.ll"
    1998 { KEYWORD_RETURN(COMPLEX); }                    // GCC
    1999         YY_BREAK
    2000 case 31:
    20011995YY_RULE_SETUP
    20021996#line 200 "lex.ll"
    20031997{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    20041998        YY_BREAK
     1999case 31:
     2000YY_RULE_SETUP
     2001#line 201 "lex.ll"
     2002{ KEYWORD_RETURN(COMPLEX); }                    // GCC
     2003        YY_BREAK
    20052004case 32:
    20062005YY_RULE_SETUP
    2007 #line 201 "lex.ll"
     2006#line 202 "lex.ll"
    20082007{ KEYWORD_RETURN(CONST); }
    20092008        YY_BREAK
    20102009case 33:
    2011 YY_RULE_SETUP
    2012 #line 202 "lex.ll"
    2013 { KEYWORD_RETURN(CONST); }                              // GCC
    2014         YY_BREAK
    2015 case 34:
    20162010YY_RULE_SETUP
    20172011#line 203 "lex.ll"
    20182012{ KEYWORD_RETURN(CONST); }                              // GCC
    20192013        YY_BREAK
     2014case 34:
     2015YY_RULE_SETUP
     2016#line 204 "lex.ll"
     2017{ KEYWORD_RETURN(CONST); }                              // GCC
     2018        YY_BREAK
    20202019case 35:
    20212020YY_RULE_SETUP
    2022 #line 204 "lex.ll"
     2021#line 205 "lex.ll"
    20232022{ KEYWORD_RETURN(CONTINUE); }
    20242023        YY_BREAK
    20252024case 36:
    20262025YY_RULE_SETUP
    2027 #line 205 "lex.ll"
     2026#line 206 "lex.ll"
    20282027{ KEYWORD_RETURN(DEFAULT); }
    20292028        YY_BREAK
    20302029case 37:
    20312030YY_RULE_SETUP
    2032 #line 206 "lex.ll"
     2031#line 207 "lex.ll"
    20332032{ KEYWORD_RETURN(DISABLE); }                    // CFA
    20342033        YY_BREAK
    20352034case 38:
    20362035YY_RULE_SETUP
    2037 #line 207 "lex.ll"
     2036#line 208 "lex.ll"
    20382037{ KEYWORD_RETURN(DO); }
    20392038        YY_BREAK
    20402039case 39:
    20412040YY_RULE_SETUP
    2042 #line 208 "lex.ll"
     2041#line 209 "lex.ll"
    20432042{ KEYWORD_RETURN(DOUBLE); }
    20442043        YY_BREAK
    20452044case 40:
    20462045YY_RULE_SETUP
    2047 #line 209 "lex.ll"
     2046#line 210 "lex.ll"
    20482047{ KEYWORD_RETURN(DTYPE); }                              // CFA
    20492048        YY_BREAK
    20502049case 41:
    20512050YY_RULE_SETUP
    2052 #line 210 "lex.ll"
     2051#line 211 "lex.ll"
    20532052{ KEYWORD_RETURN(ELSE); }
    20542053        YY_BREAK
    20552054case 42:
    20562055YY_RULE_SETUP
    2057 #line 211 "lex.ll"
     2056#line 212 "lex.ll"
    20582057{ KEYWORD_RETURN(ENABLE); }                             // CFA
    20592058        YY_BREAK
    20602059case 43:
    20612060YY_RULE_SETUP
    2062 #line 212 "lex.ll"
     2061#line 213 "lex.ll"
    20632062{ KEYWORD_RETURN(ENUM); }
    20642063        YY_BREAK
    20652064case 44:
    20662065YY_RULE_SETUP
    2067 #line 213 "lex.ll"
     2066#line 214 "lex.ll"
    20682067{ KEYWORD_RETURN(EXTENSION); }                  // GCC
    20692068        YY_BREAK
    20702069case 45:
    20712070YY_RULE_SETUP
    2072 #line 214 "lex.ll"
     2071#line 215 "lex.ll"
    20732072{ KEYWORD_RETURN(EXTERN); }
    20742073        YY_BREAK
    20752074case 46:
    20762075YY_RULE_SETUP
    2077 #line 215 "lex.ll"
     2076#line 216 "lex.ll"
    20782077{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
    20792078        YY_BREAK
    20802079case 47:
    20812080YY_RULE_SETUP
    2082 #line 216 "lex.ll"
     2081#line 217 "lex.ll"
    20832082{ KEYWORD_RETURN(FINALLY); }                    // CFA
    20842083        YY_BREAK
    20852084case 48:
    20862085YY_RULE_SETUP
    2087 #line 217 "lex.ll"
     2086#line 218 "lex.ll"
    20882087{ KEYWORD_RETURN(FLOAT); }
    20892088        YY_BREAK
    20902089case 49:
    20912090YY_RULE_SETUP
    2092 #line 218 "lex.ll"
     2091#line 219 "lex.ll"
    20932092{ KEYWORD_RETURN(FLOAT); }                              // GCC
    20942093        YY_BREAK
    20952094case 50:
    20962095YY_RULE_SETUP
    2097 #line 219 "lex.ll"
     2096#line 220 "lex.ll"
    20982097{ KEYWORD_RETURN(FOR); }
    20992098        YY_BREAK
    21002099case 51:
    21012100YY_RULE_SETUP
    2102 #line 220 "lex.ll"
     2101#line 221 "lex.ll"
    21032102{ KEYWORD_RETURN(FORALL); }                             // CFA
    21042103        YY_BREAK
    21052104case 52:
    21062105YY_RULE_SETUP
    2107 #line 221 "lex.ll"
     2106#line 222 "lex.ll"
    21082107{ KEYWORD_RETURN(FORTRAN); }
    21092108        YY_BREAK
    21102109case 53:
    21112110YY_RULE_SETUP
    2112 #line 222 "lex.ll"
     2111#line 223 "lex.ll"
    21132112{ KEYWORD_RETURN(FTYPE); }                              // CFA
    21142113        YY_BREAK
    21152114case 54:
    21162115YY_RULE_SETUP
    2117 #line 223 "lex.ll"
     2116#line 224 "lex.ll"
    21182117{ KEYWORD_RETURN(GENERIC); }                    // C11
    21192118        YY_BREAK
    21202119case 55:
    21212120YY_RULE_SETUP
    2122 #line 224 "lex.ll"
     2121#line 225 "lex.ll"
    21232122{ KEYWORD_RETURN(GOTO); }
    21242123        YY_BREAK
    21252124case 56:
    21262125YY_RULE_SETUP
    2127 #line 225 "lex.ll"
     2126#line 226 "lex.ll"
    21282127{ KEYWORD_RETURN(IF); }
    21292128        YY_BREAK
    21302129case 57:
    21312130YY_RULE_SETUP
    2132 #line 226 "lex.ll"
     2131#line 227 "lex.ll"
    21332132{ KEYWORD_RETURN(IMAGINARY); }                  // C99
    21342133        YY_BREAK
    21352134case 58:
    2136 YY_RULE_SETUP
    2137 #line 227 "lex.ll"
    2138 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2139         YY_BREAK
    2140 case 59:
    21412135YY_RULE_SETUP
    21422136#line 228 "lex.ll"
    21432137{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    21442138        YY_BREAK
     2139case 59:
     2140YY_RULE_SETUP
     2141#line 229 "lex.ll"
     2142{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2143        YY_BREAK
    21452144case 60:
    21462145YY_RULE_SETUP
    2147 #line 229 "lex.ll"
     2146#line 230 "lex.ll"
    21482147{ KEYWORD_RETURN(INLINE); }                             // C99
    21492148        YY_BREAK
    21502149case 61:
    2151 YY_RULE_SETUP
    2152 #line 230 "lex.ll"
    2153 { KEYWORD_RETURN(INLINE); }                             // GCC
    2154         YY_BREAK
    2155 case 62:
    21562150YY_RULE_SETUP
    21572151#line 231 "lex.ll"
    21582152{ KEYWORD_RETURN(INLINE); }                             // GCC
    21592153        YY_BREAK
     2154case 62:
     2155YY_RULE_SETUP
     2156#line 232 "lex.ll"
     2157{ KEYWORD_RETURN(INLINE); }                             // GCC
     2158        YY_BREAK
    21602159case 63:
    21612160YY_RULE_SETUP
    2162 #line 232 "lex.ll"
     2161#line 233 "lex.ll"
    21632162{ KEYWORD_RETURN(INT); }
    21642163        YY_BREAK
    21652164case 64:
    21662165YY_RULE_SETUP
    2167 #line 233 "lex.ll"
     2166#line 234 "lex.ll"
    21682167{ KEYWORD_RETURN(INT); }                                // GCC
    21692168        YY_BREAK
    21702169case 65:
    21712170YY_RULE_SETUP
    2172 #line 234 "lex.ll"
     2171#line 235 "lex.ll"
    21732172{ KEYWORD_RETURN(LABEL); }                              // GCC
    21742173        YY_BREAK
    21752174case 66:
    21762175YY_RULE_SETUP
    2177 #line 235 "lex.ll"
     2176#line 236 "lex.ll"
    21782177{ KEYWORD_RETURN(LONG); }
    21792178        YY_BREAK
    21802179case 67:
    21812180YY_RULE_SETUP
    2182 #line 236 "lex.ll"
     2181#line 237 "lex.ll"
    21832182{ KEYWORD_RETURN(LVALUE); }                             // CFA
    21842183        YY_BREAK
    21852184case 68:
    21862185YY_RULE_SETUP
    2187 #line 237 "lex.ll"
     2186#line 238 "lex.ll"
    21882187{ KEYWORD_RETURN(NORETURN); }                   // C11
    21892188        YY_BREAK
    21902189case 69:
    21912190YY_RULE_SETUP
    2192 #line 238 "lex.ll"
     2191#line 239 "lex.ll"
    21932192{ KEYWORD_RETURN(OFFSETOF); }           // GCC
    21942193        YY_BREAK
    21952194case 70:
    21962195YY_RULE_SETUP
    2197 #line 239 "lex.ll"
     2196#line 240 "lex.ll"
    21982197{ KEYWORD_RETURN(OTYPE); }                              // CFA
    21992198        YY_BREAK
    22002199case 71:
    22012200YY_RULE_SETUP
    2202 #line 240 "lex.ll"
     2201#line 241 "lex.ll"
    22032202{ KEYWORD_RETURN(REGISTER); }
    22042203        YY_BREAK
    22052204case 72:
    22062205YY_RULE_SETUP
    2207 #line 241 "lex.ll"
     2206#line 242 "lex.ll"
    22082207{ KEYWORD_RETURN(RESTRICT); }                   // C99
    22092208        YY_BREAK
    22102209case 73:
    2211 YY_RULE_SETUP
    2212 #line 242 "lex.ll"
    2213 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    2214         YY_BREAK
    2215 case 74:
    22162210YY_RULE_SETUP
    22172211#line 243 "lex.ll"
    22182212{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    22192213        YY_BREAK
     2214case 74:
     2215YY_RULE_SETUP
     2216#line 244 "lex.ll"
     2217{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2218        YY_BREAK
    22202219case 75:
    22212220YY_RULE_SETUP
    2222 #line 244 "lex.ll"
     2221#line 245 "lex.ll"
    22232222{ KEYWORD_RETURN(RETURN); }
    22242223        YY_BREAK
    22252224case 76:
    22262225YY_RULE_SETUP
    2227 #line 245 "lex.ll"
     2226#line 246 "lex.ll"
    22282227{ KEYWORD_RETURN(SHORT); }
    22292228        YY_BREAK
    22302229case 77:
    22312230YY_RULE_SETUP
    2232 #line 246 "lex.ll"
     2231#line 247 "lex.ll"
    22332232{ KEYWORD_RETURN(SIGNED); }
    22342233        YY_BREAK
    22352234case 78:
    2236 YY_RULE_SETUP
    2237 #line 247 "lex.ll"
    2238 { KEYWORD_RETURN(SIGNED); }                             // GCC
    2239         YY_BREAK
    2240 case 79:
    22412235YY_RULE_SETUP
    22422236#line 248 "lex.ll"
    22432237{ KEYWORD_RETURN(SIGNED); }                             // GCC
    22442238        YY_BREAK
     2239case 79:
     2240YY_RULE_SETUP
     2241#line 249 "lex.ll"
     2242{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2243        YY_BREAK
    22452244case 80:
    22462245YY_RULE_SETUP
    2247 #line 249 "lex.ll"
     2246#line 250 "lex.ll"
    22482247{ KEYWORD_RETURN(SIZEOF); }
    22492248        YY_BREAK
    22502249case 81:
    22512250YY_RULE_SETUP
    2252 #line 250 "lex.ll"
     2251#line 251 "lex.ll"
    22532252{ KEYWORD_RETURN(STATIC); }
    22542253        YY_BREAK
    22552254case 82:
    22562255YY_RULE_SETUP
    2257 #line 251 "lex.ll"
     2256#line 252 "lex.ll"
    22582257{ KEYWORD_RETURN(STATICASSERT); }               // C11
    22592258        YY_BREAK
    22602259case 83:
    22612260YY_RULE_SETUP
    2262 #line 252 "lex.ll"
     2261#line 253 "lex.ll"
    22632262{ KEYWORD_RETURN(STRUCT); }
    22642263        YY_BREAK
    22652264case 84:
    22662265YY_RULE_SETUP
    2267 #line 253 "lex.ll"
     2266#line 254 "lex.ll"
    22682267{ KEYWORD_RETURN(SWITCH); }
    22692268        YY_BREAK
    22702269case 85:
    22712270YY_RULE_SETUP
    2272 #line 254 "lex.ll"
     2271#line 255 "lex.ll"
    22732272{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    22742273        YY_BREAK
    22752274case 86:
    22762275YY_RULE_SETUP
    2277 #line 255 "lex.ll"
     2276#line 256 "lex.ll"
    22782277{ KEYWORD_RETURN(THROW); }                              // CFA
    22792278        YY_BREAK
    22802279case 87:
    22812280YY_RULE_SETUP
    2282 #line 256 "lex.ll"
     2281#line 257 "lex.ll"
    22832282{ KEYWORD_RETURN(THROWRESUME); }                // CFA
    22842283        YY_BREAK
    22852284case 88:
    22862285YY_RULE_SETUP
    2287 #line 257 "lex.ll"
     2286#line 258 "lex.ll"
    22882287{ KEYWORD_RETURN(TRAIT); }                              // CFA
    22892288        YY_BREAK
    22902289case 89:
    22912290YY_RULE_SETUP
    2292 #line 258 "lex.ll"
     2291#line 259 "lex.ll"
    22932292{ KEYWORD_RETURN(TRY); }                                // CFA
    22942293        YY_BREAK
    22952294case 90:
    22962295YY_RULE_SETUP
    2297 #line 259 "lex.ll"
     2296#line 260 "lex.ll"
    22982297{ KEYWORD_RETURN(TYPEDEF); }
    22992298        YY_BREAK
    23002299case 91:
    2301 YY_RULE_SETUP
    2302 #line 260 "lex.ll"
    2303 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2304         YY_BREAK
    2305 case 92:
    23062300YY_RULE_SETUP
    23072301#line 261 "lex.ll"
    23082302{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23092303        YY_BREAK
    2310 case 93:
     2304case 92:
    23112305YY_RULE_SETUP
    23122306#line 262 "lex.ll"
    23132307{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23142308        YY_BREAK
     2309case 93:
     2310YY_RULE_SETUP
     2311#line 263 "lex.ll"
     2312{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2313        YY_BREAK
    23152314case 94:
    23162315YY_RULE_SETUP
    2317 #line 263 "lex.ll"
     2316#line 264 "lex.ll"
    23182317{ KEYWORD_RETURN(UNION); }
    23192318        YY_BREAK
    23202319case 95:
    23212320YY_RULE_SETUP
    2322 #line 264 "lex.ll"
     2321#line 265 "lex.ll"
    23232322{ KEYWORD_RETURN(UNSIGNED); }
    23242323        YY_BREAK
    23252324case 96:
    23262325YY_RULE_SETUP
    2327 #line 265 "lex.ll"
     2326#line 266 "lex.ll"
    23282327{ KEYWORD_RETURN(VALIST); }                     // GCC
    23292328        YY_BREAK
    23302329case 97:
    23312330YY_RULE_SETUP
    2332 #line 266 "lex.ll"
     2331#line 267 "lex.ll"
    23332332{ KEYWORD_RETURN(VOID); }
    23342333        YY_BREAK
    23352334case 98:
    23362335YY_RULE_SETUP
    2337 #line 267 "lex.ll"
     2336#line 268 "lex.ll"
    23382337{ KEYWORD_RETURN(VOLATILE); }
    23392338        YY_BREAK
    23402339case 99:
    2341 YY_RULE_SETUP
    2342 #line 268 "lex.ll"
    2343 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    2344         YY_BREAK
    2345 case 100:
    23462340YY_RULE_SETUP
    23472341#line 269 "lex.ll"
    23482342{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23492343        YY_BREAK
     2344case 100:
     2345YY_RULE_SETUP
     2346#line 270 "lex.ll"
     2347{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2348        YY_BREAK
    23502349case 101:
    23512350YY_RULE_SETUP
    2352 #line 270 "lex.ll"
     2351#line 271 "lex.ll"
    23532352{ KEYWORD_RETURN(WHILE); }
    23542353        YY_BREAK
     
    23562355case 102:
    23572356YY_RULE_SETUP
    2358 #line 273 "lex.ll"
     2357#line 274 "lex.ll"
    23592358{ IDENTIFIER_RETURN(); }
    23602359        YY_BREAK
    23612360case 103:
    23622361YY_RULE_SETUP
    2363 #line 274 "lex.ll"
     2362#line 275 "lex.ll"
    23642363{ ATTRIBUTE_RETURN(); }
    23652364        YY_BREAK
    23662365case 104:
    23672366YY_RULE_SETUP
    2368 #line 275 "lex.ll"
     2367#line 276 "lex.ll"
    23692368{ BEGIN BKQUOTE; }
    23702369        YY_BREAK
    23712370case 105:
    23722371YY_RULE_SETUP
    2373 #line 276 "lex.ll"
     2372#line 277 "lex.ll"
    23742373{ IDENTIFIER_RETURN(); }
    23752374        YY_BREAK
    23762375case 106:
    23772376YY_RULE_SETUP
    2378 #line 277 "lex.ll"
     2377#line 278 "lex.ll"
    23792378{ BEGIN 0; }
    23802379        YY_BREAK
     
    23822381case 107:
    23832382YY_RULE_SETUP
    2384 #line 280 "lex.ll"
     2383#line 281 "lex.ll"
    23852384{ NUMERIC_RETURN(ZERO); }                               // CFA
    23862385        YY_BREAK
    23872386case 108:
    23882387YY_RULE_SETUP
    2389 #line 281 "lex.ll"
     2388#line 282 "lex.ll"
    23902389{ NUMERIC_RETURN(ONE); }                                // CFA
    23912390        YY_BREAK
    23922391case 109:
    2393 YY_RULE_SETUP
    2394 #line 282 "lex.ll"
    2395 { NUMERIC_RETURN(INTEGERconstant); }
    2396         YY_BREAK
    2397 case 110:
    23982392YY_RULE_SETUP
    23992393#line 283 "lex.ll"
    24002394{ NUMERIC_RETURN(INTEGERconstant); }
    24012395        YY_BREAK
    2402 case 111:
     2396case 110:
    24032397YY_RULE_SETUP
    24042398#line 284 "lex.ll"
    24052399{ NUMERIC_RETURN(INTEGERconstant); }
    24062400        YY_BREAK
     2401case 111:
     2402YY_RULE_SETUP
     2403#line 285 "lex.ll"
     2404{ NUMERIC_RETURN(INTEGERconstant); }
     2405        YY_BREAK
    24072406case 112:
    2408 YY_RULE_SETUP
    2409 #line 285 "lex.ll"
    2410 { NUMERIC_RETURN(FLOATINGconstant); }
    2411         YY_BREAK
    2412 case 113:
    24132407YY_RULE_SETUP
    24142408#line 286 "lex.ll"
    24152409{ NUMERIC_RETURN(FLOATINGconstant); }
    24162410        YY_BREAK
     2411case 113:
     2412YY_RULE_SETUP
     2413#line 287 "lex.ll"
     2414{ NUMERIC_RETURN(FLOATINGconstant); }
     2415        YY_BREAK
    24172416/* character constant, allows empty value */
    24182417case 114:
    24192418YY_RULE_SETUP
    2420 #line 289 "lex.ll"
     2419#line 290 "lex.ll"
    24212420{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    24222421        YY_BREAK
    24232422case 115:
    24242423YY_RULE_SETUP
    2425 #line 290 "lex.ll"
     2424#line 291 "lex.ll"
    24262425{ *strtext += std::string( yytext ); }
    24272426        YY_BREAK
     
    24292428/* rule 116 can match eol */
    24302429YY_RULE_SETUP
    2431 #line 291 "lex.ll"
     2430#line 292 "lex.ll"
    24322431{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    24332432        YY_BREAK
     
    24362435case 117:
    24372436YY_RULE_SETUP
    2438 #line 295 "lex.ll"
     2437#line 296 "lex.ll"
    24392438{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    24402439        YY_BREAK
    24412440case 118:
    24422441YY_RULE_SETUP
    2443 #line 296 "lex.ll"
     2442#line 297 "lex.ll"
    24442443{ *strtext += std::string( yytext ); }
    24452444        YY_BREAK
     
    24472446/* rule 119 can match eol */
    24482447YY_RULE_SETUP
    2449 #line 297 "lex.ll"
     2448#line 298 "lex.ll"
    24502449{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    24512450        YY_BREAK
     
    24542453case 120:
    24552454YY_RULE_SETUP
    2456 #line 301 "lex.ll"
     2455#line 302 "lex.ll"
    24572456{ rm_underscore(); *strtext += std::string( yytext ); }
    24582457        YY_BREAK
     
    24602459/* rule 121 can match eol */
    24612460YY_RULE_SETUP
    2462 #line 302 "lex.ll"
     2461#line 303 "lex.ll"
    24632462{}                                              // continuation (ALSO HANDLED BY CPP)
    24642463        YY_BREAK
    24652464case 122:
    24662465YY_RULE_SETUP
    2467 #line 303 "lex.ll"
     2466#line 304 "lex.ll"
    24682467{ *strtext += std::string( yytext ); } // unknown escape character
    24692468        YY_BREAK
     
    24712470case 123:
    24722471YY_RULE_SETUP
    2473 #line 306 "lex.ll"
    2474 { ASCIIOP_RETURN(); }
    2475         YY_BREAK
    2476 case 124:
    2477 YY_RULE_SETUP
    24782472#line 307 "lex.ll"
    24792473{ ASCIIOP_RETURN(); }
    24802474        YY_BREAK
    2481 case 125:
     2475case 124:
    24822476YY_RULE_SETUP
    24832477#line 308 "lex.ll"
    24842478{ ASCIIOP_RETURN(); }
    24852479        YY_BREAK
    2486 case 126:
     2480case 125:
    24872481YY_RULE_SETUP
    24882482#line 309 "lex.ll"
    24892483{ ASCIIOP_RETURN(); }
    24902484        YY_BREAK
    2491 case 127:
     2485case 126:
    24922486YY_RULE_SETUP
    24932487#line 310 "lex.ll"
    24942488{ ASCIIOP_RETURN(); }
    24952489        YY_BREAK
    2496 case 128:
     2490case 127:
    24972491YY_RULE_SETUP
    24982492#line 311 "lex.ll"
    24992493{ ASCIIOP_RETURN(); }
    25002494        YY_BREAK
     2495case 128:
     2496YY_RULE_SETUP
     2497#line 312 "lex.ll"
     2498{ ASCIIOP_RETURN(); }
     2499        YY_BREAK
    25012500case 129:
    25022501YY_RULE_SETUP
    2503 #line 312 "lex.ll"
     2502#line 313 "lex.ll"
    25042503{ ASCIIOP_RETURN(); }                                   // also operator
    25052504        YY_BREAK
    25062505case 130:
    2507 YY_RULE_SETUP
    2508 #line 313 "lex.ll"
    2509 { ASCIIOP_RETURN(); }
    2510         YY_BREAK
    2511 case 131:
    25122506YY_RULE_SETUP
    25132507#line 314 "lex.ll"
    25142508{ ASCIIOP_RETURN(); }
    25152509        YY_BREAK
     2510case 131:
     2511YY_RULE_SETUP
     2512#line 315 "lex.ll"
     2513{ ASCIIOP_RETURN(); }
     2514        YY_BREAK
    25162515case 132:
    25172516YY_RULE_SETUP
    2518 #line 315 "lex.ll"
     2517#line 316 "lex.ll"
    25192518{ ASCIIOP_RETURN(); }                                   // also operator
    25202519        YY_BREAK
    25212520case 133:
    25222521YY_RULE_SETUP
    2523 #line 316 "lex.ll"
     2522#line 317 "lex.ll"
    25242523{ NAMEDOP_RETURN(ELLIPSIS); }
    25252524        YY_BREAK
     
    25272526case 134:
    25282527YY_RULE_SETUP
    2529 #line 319 "lex.ll"
     2528#line 320 "lex.ll"
    25302529{ RETURN_VAL('['); }
    25312530        YY_BREAK
    25322531case 135:
    25332532YY_RULE_SETUP
    2534 #line 320 "lex.ll"
     2533#line 321 "lex.ll"
    25352534{ RETURN_VAL(']'); }
    25362535        YY_BREAK
    25372536case 136:
    25382537YY_RULE_SETUP
    2539 #line 321 "lex.ll"
     2538#line 322 "lex.ll"
    25402539{ RETURN_VAL('{'); }
    25412540        YY_BREAK
    25422541case 137:
    25432542YY_RULE_SETUP
    2544 #line 322 "lex.ll"
     2543#line 323 "lex.ll"
    25452544{ RETURN_VAL('}'); }
    25462545        YY_BREAK
     
    25482547case 138:
    25492548YY_RULE_SETUP
    2550 #line 325 "lex.ll"
    2551 { ASCIIOP_RETURN(); }
    2552         YY_BREAK
    2553 case 139:
    2554 YY_RULE_SETUP
    25552549#line 326 "lex.ll"
    25562550{ ASCIIOP_RETURN(); }
    25572551        YY_BREAK
    2558 case 140:
     2552case 139:
    25592553YY_RULE_SETUP
    25602554#line 327 "lex.ll"
    25612555{ ASCIIOP_RETURN(); }
    25622556        YY_BREAK
    2563 case 141:
     2557case 140:
    25642558YY_RULE_SETUP
    25652559#line 328 "lex.ll"
    25662560{ ASCIIOP_RETURN(); }
    25672561        YY_BREAK
    2568 case 142:
     2562case 141:
    25692563YY_RULE_SETUP
    25702564#line 329 "lex.ll"
    25712565{ ASCIIOP_RETURN(); }
    25722566        YY_BREAK
    2573 case 143:
     2567case 142:
    25742568YY_RULE_SETUP
    25752569#line 330 "lex.ll"
    25762570{ ASCIIOP_RETURN(); }
    25772571        YY_BREAK
    2578 case 144:
     2572case 143:
    25792573YY_RULE_SETUP
    25802574#line 331 "lex.ll"
    25812575{ ASCIIOP_RETURN(); }
    25822576        YY_BREAK
    2583 case 145:
     2577case 144:
    25842578YY_RULE_SETUP
    25852579#line 332 "lex.ll"
    25862580{ ASCIIOP_RETURN(); }
    25872581        YY_BREAK
    2588 case 146:
     2582case 145:
    25892583YY_RULE_SETUP
    25902584#line 333 "lex.ll"
    25912585{ ASCIIOP_RETURN(); }
    25922586        YY_BREAK
    2593 case 147:
     2587case 146:
    25942588YY_RULE_SETUP
    25952589#line 334 "lex.ll"
    25962590{ ASCIIOP_RETURN(); }
    25972591        YY_BREAK
    2598 case 148:
     2592case 147:
    25992593YY_RULE_SETUP
    26002594#line 335 "lex.ll"
    26012595{ ASCIIOP_RETURN(); }
    26022596        YY_BREAK
    2603 case 149:
     2597case 148:
    26042598YY_RULE_SETUP
    26052599#line 336 "lex.ll"
    26062600{ ASCIIOP_RETURN(); }
    26072601        YY_BREAK
    2608 case 150:
     2602case 149:
    26092603YY_RULE_SETUP
    26102604#line 337 "lex.ll"
    26112605{ ASCIIOP_RETURN(); }
    26122606        YY_BREAK
    2613 case 151:
     2607case 150:
    26142608YY_RULE_SETUP
    26152609#line 338 "lex.ll"
    26162610{ ASCIIOP_RETURN(); }
    26172611        YY_BREAK
     2612case 151:
     2613YY_RULE_SETUP
     2614#line 339 "lex.ll"
     2615{ ASCIIOP_RETURN(); }
     2616        YY_BREAK
    26182617case 152:
    26192618YY_RULE_SETUP
    2620 #line 340 "lex.ll"
     2619#line 341 "lex.ll"
    26212620{ NAMEDOP_RETURN(ICR); }
    26222621        YY_BREAK
    26232622case 153:
    26242623YY_RULE_SETUP
    2625 #line 341 "lex.ll"
     2624#line 342 "lex.ll"
    26262625{ NAMEDOP_RETURN(DECR); }
    26272626        YY_BREAK
    26282627case 154:
    26292628YY_RULE_SETUP
    2630 #line 342 "lex.ll"
     2629#line 343 "lex.ll"
    26312630{ NAMEDOP_RETURN(EQ); }
    26322631        YY_BREAK
    26332632case 155:
    26342633YY_RULE_SETUP
    2635 #line 343 "lex.ll"
     2634#line 344 "lex.ll"
    26362635{ NAMEDOP_RETURN(NE); }
    26372636        YY_BREAK
    26382637case 156:
    26392638YY_RULE_SETUP
    2640 #line 344 "lex.ll"
     2639#line 345 "lex.ll"
    26412640{ NAMEDOP_RETURN(LS); }
    26422641        YY_BREAK
    26432642case 157:
    26442643YY_RULE_SETUP
    2645 #line 345 "lex.ll"
     2644#line 346 "lex.ll"
    26462645{ NAMEDOP_RETURN(RS); }
    26472646        YY_BREAK
    26482647case 158:
    26492648YY_RULE_SETUP
    2650 #line 346 "lex.ll"
     2649#line 347 "lex.ll"
    26512650{ NAMEDOP_RETURN(LE); }
    26522651        YY_BREAK
    26532652case 159:
    26542653YY_RULE_SETUP
    2655 #line 347 "lex.ll"
     2654#line 348 "lex.ll"
    26562655{ NAMEDOP_RETURN(GE); }
    26572656        YY_BREAK
    26582657case 160:
    26592658YY_RULE_SETUP
    2660 #line 348 "lex.ll"
     2659#line 349 "lex.ll"
    26612660{ NAMEDOP_RETURN(ANDAND); }
    26622661        YY_BREAK
    26632662case 161:
    26642663YY_RULE_SETUP
    2665 #line 349 "lex.ll"
     2664#line 350 "lex.ll"
    26662665{ NAMEDOP_RETURN(OROR); }
    26672666        YY_BREAK
    26682667case 162:
    26692668YY_RULE_SETUP
    2670 #line 350 "lex.ll"
     2669#line 351 "lex.ll"
    26712670{ NAMEDOP_RETURN(ARROW); }
    26722671        YY_BREAK
    26732672case 163:
    26742673YY_RULE_SETUP
    2675 #line 351 "lex.ll"
     2674#line 352 "lex.ll"
    26762675{ NAMEDOP_RETURN(PLUSassign); }
    26772676        YY_BREAK
    26782677case 164:
    26792678YY_RULE_SETUP
    2680 #line 352 "lex.ll"
     2679#line 353 "lex.ll"
    26812680{ NAMEDOP_RETURN(MINUSassign); }
    26822681        YY_BREAK
    26832682case 165:
    26842683YY_RULE_SETUP
    2685 #line 353 "lex.ll"
     2684#line 354 "lex.ll"
    26862685{ NAMEDOP_RETURN(MULTassign); }
    26872686        YY_BREAK
    26882687case 166:
    26892688YY_RULE_SETUP
    2690 #line 354 "lex.ll"
     2689#line 355 "lex.ll"
    26912690{ NAMEDOP_RETURN(DIVassign); }
    26922691        YY_BREAK
    26932692case 167:
    26942693YY_RULE_SETUP
    2695 #line 355 "lex.ll"
     2694#line 356 "lex.ll"
    26962695{ NAMEDOP_RETURN(MODassign); }
    26972696        YY_BREAK
    26982697case 168:
    26992698YY_RULE_SETUP
    2700 #line 356 "lex.ll"
     2699#line 357 "lex.ll"
    27012700{ NAMEDOP_RETURN(ANDassign); }
    27022701        YY_BREAK
    27032702case 169:
    27042703YY_RULE_SETUP
    2705 #line 357 "lex.ll"
     2704#line 358 "lex.ll"
    27062705{ NAMEDOP_RETURN(ORassign); }
    27072706        YY_BREAK
    27082707case 170:
    27092708YY_RULE_SETUP
    2710 #line 358 "lex.ll"
     2709#line 359 "lex.ll"
    27112710{ NAMEDOP_RETURN(ERassign); }
    27122711        YY_BREAK
    27132712case 171:
    27142713YY_RULE_SETUP
    2715 #line 359 "lex.ll"
     2714#line 360 "lex.ll"
    27162715{ NAMEDOP_RETURN(LSassign); }
    27172716        YY_BREAK
    27182717case 172:
    27192718YY_RULE_SETUP
    2720 #line 360 "lex.ll"
     2719#line 361 "lex.ll"
    27212720{ NAMEDOP_RETURN(RSassign); }
    27222721        YY_BREAK
    27232722case 173:
    27242723YY_RULE_SETUP
    2725 #line 362 "lex.ll"
     2724#line 363 "lex.ll"
    27262725{ NAMEDOP_RETURN(ATassign); }
    27272726        YY_BREAK
     
    27292728case 174:
    27302729YY_RULE_SETUP
    2731 #line 365 "lex.ll"
     2730#line 366 "lex.ll"
    27322731{ IDENTIFIER_RETURN(); }                                // unary
    27332732        YY_BREAK
    27342733case 175:
    2735 YY_RULE_SETUP
    2736 #line 366 "lex.ll"
    2737 { IDENTIFIER_RETURN(); }
    2738         YY_BREAK
    2739 case 176:
    27402734YY_RULE_SETUP
    27412735#line 367 "lex.ll"
    27422736{ IDENTIFIER_RETURN(); }
    27432737        YY_BREAK
     2738case 176:
     2739YY_RULE_SETUP
     2740#line 368 "lex.ll"
     2741{ IDENTIFIER_RETURN(); }
     2742        YY_BREAK
    27442743case 177:
    27452744YY_RULE_SETUP
    2746 #line 368 "lex.ll"
     2745#line 369 "lex.ll"
    27472746{ IDENTIFIER_RETURN(); }                // binary
    27482747        YY_BREAK
     
    27752774case 178:
    27762775YY_RULE_SETUP
    2777 #line 395 "lex.ll"
     2776#line 396 "lex.ll"
    27782777{
    27792778        // 1 or 2 character unary operator ?
     
    27902789case 179:
    27912790YY_RULE_SETUP
    2792 #line 407 "lex.ll"
     2791#line 408 "lex.ll"
    27932792{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    27942793        YY_BREAK
    27952794case 180:
    27962795YY_RULE_SETUP
    2797 #line 409 "lex.ll"
     2796#line 410 "lex.ll"
    27982797ECHO;
    27992798        YY_BREAK
    2800 #line 2801 "Parser/lex.cc"
     2799#line 2800 "Parser/lex.cc"
    28012800case YY_STATE_EOF(INITIAL):
    28022801case YY_STATE_EOF(COMMENT):
     
    37733772#define YYTABLES_NAME "yytables"
    37743773
    3775 #line 409 "lex.ll"
     3774#line 410 "lex.ll"
    37763775
    37773776
  • src/Parser/lex.ll

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

    rf80e0218 r1b5c81ed  
    6767
    6868/* Line 268 of yacc.c  */
    69 #line 42 "parser.yy"
     69#line 44 "parser.yy"
    7070
    7171#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    342342
    343343/* Line 293 of yacc.c  */
    344 #line 110 "parser.yy"
     344#line 112 "parser.yy"
    345345
    346346        Token tok;
     
    588588
    589589/* YYFINAL -- State number of the termination state.  */
    590 #define YYFINAL  252
     590#define YYFINAL  249
    591591/* YYLAST -- Last index in YYTABLE.  */
    592 #define YYLAST   12094
     592#define YYLAST   11449
    593593
    594594/* YYNTOKENS -- Number of terminals.  */
    595595#define YYNTOKENS  133
    596596/* YYNNTS -- Number of nonterminals.  */
    597 #define YYNNTS  241
     597#define YYNNTS  240
    598598/* YYNRULES -- Number of rules.  */
    599 #define YYNRULES  755
     599#define YYNRULES  754
    600600/* YYNRULES -- Number of states.  */
    601 #define YYNSTATES  1580
     601#define YYNSTATES  1581
    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,   122,     2,     2,     2,   125,   119,     2,
    617      109,   110,   118,   120,   116,   121,   113,   124,     2,     2,
     616       2,     2,     2,   118,     2,     2,     2,   125,   120,     2,
     617     109,   110,   119,   121,   116,   122,   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,   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
     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
    733733};
    734734
     
    736736static const yytype_int16 yyrhs[] =
    737737{
    738      302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
     738     301,     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,   169,
    742      110,    -1,   109,   173,   110,    -1,   142,    -1,   143,   111,
    743      134,   164,   135,   112,    -1,   143,   109,   144,   110,    -1,
     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,
    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,   275,   110,   114,   279,   372,   115,    -1,   143,   114,
     747     109,   274,   110,   114,   278,   371,   115,    -1,   143,   114,
    748748     144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -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,
     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,
    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,    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,
     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,
    779779      -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,   103,
    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,
     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,
    851851      10,    -1,    12,    -1,    11,    -1,    14,    -1,    67,    -1,
    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,
     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,
    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,   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,
     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,
    894894      -1,   138,    -1,    74,    -1,    75,    -1,   139,    -1,    74,
    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
     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
    10131013};
    10141014
     
    10161016static const yytype_uint16 yyrline[] =
    10171017{
    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
     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
    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", "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",
     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",
    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   "variable_type_redeclarator", "paren_type", "type_ptr", "type_array",
     1187  "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,    42,    38,
    1227       43,    45,    33,   126,    47,    37,    60,    62,    94,   124,
     1226      41,    91,    93,    46,   123,   125,    44,    58,    33,    42,
     1227      38,    43,    45,   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,   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
     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
    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,     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,
     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,
    13481348       1,     1,     1,     1,     1,     1,     1,     1,     1,     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,
     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,
    13601360       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    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
     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
    13921392};
    13931393
     
    13971397static const yytype_uint16 yydefact[] =
    13981398{
    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,
     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,
    14551455       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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
     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
    15571558};
    15581559
     
    15601561static const yytype_int16 yydefgoto[] =
    15611562{
    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
     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
    15871587};
    15881588
    15891589/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15901590   STATE-NUM.  */
    1591 #define YYPACT_NINF -1355
     1591#define YYPACT_NINF -1332
    15921592static const yytype_int16 yypact[] =
    15931593{
    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
     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
    17521753};
    17531754
     
    17551756static const yytype_int16 yypgoto[] =
    17561757{
    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
     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
    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 -526
     1787#define YYTABLE_NINF -525
    17881788static const yytype_int16 yytable[] =
    17891789{
    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,
     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,
    20572004       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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,
     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,
     2079       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,
     2141       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2142      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2143      22,    23,    24,    25,   355,     0,    26,    27,    28,    29,
     2144       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,
     2147      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,
    20712184       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,
     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,
    21092215       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,
     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,
    21342261       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,
     2262       0,   593,   516,     0,     0,     0,   598,     0,     0,     0,
     2263       0,     0,     0,     0,   516,   606,     0,     0,     0,     0,
    21572264       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,
     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,
    21602292       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,
     2293       0,     0,     0,     0,   890,   210,     0,    43,     0,   207,
     2294       0,     0,     0,     0,     0,     0,     0,   208,     0,     0,
    21732295       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,
     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,
    21772305       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,
     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,
     2328       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2329      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,
     2332      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,
     2337       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,
     2343       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,
     2355       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,
     2415       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2416      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2417       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,
     2440       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,
     2453       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,
     2580       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2581       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,
     2588       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,
     2595       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2596      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2597       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,
    21832692       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    21842693      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,
     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,
    22352712      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,
     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,
    22882723      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,
     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,
    24272738       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    24282739      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,
     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,
    24392757       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,
    2443        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2758       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,
     2772       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,
    24442779      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2445       22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
    2446        0,     0,    30,     0,     0,    31,    32,     0,     0,     0,
    2447      994,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2448        0,     0,     0,     0,     0,     0,     0,     0,     0,   887,
    2449       33,     0,     0,    34,     0,    35,     0,    36,    37,     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,
     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,
    24702790      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    24712791      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,
     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,
    24742801       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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,
     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,
    24822845       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    24832846      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    24842847      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,
    2498       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    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,
    2527        0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
    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,
    2558        0,     0,     0,     0,     0,     0,     0,     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,
    2563        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2564        0,     0,     0,     0,    44,     0,    45,     0,     0,     0,
    2565     -524,     0,     0,    46,    47,     1,     2,     3,     4,     5,
    2566        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2567       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2568        0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
    2569        0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
    2570        0,     0,     0,     0,     0,     0,     0,     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,
    2575        0,     0,     0,     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,
     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,
    25902903      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,
     2904      22,    23,    24,    25,     0,     0,     0,     0,     0,     0,
     2905       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
    25932906       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25942907       0,     0,     0,     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,
    2597        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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,
    2601        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2602       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2603        0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2604        0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
    2605        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2606        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    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,
    2610        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2611        0,    44,     0,   210,     0,     0,     0,     0,     0,     0,
    2612       46,    47,     2,   208,     4,     5,     6,     7,     8,     9,
     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,
    26132911      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    26142912      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     
    26172915       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26182916       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    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,
     2917       0,     0,   206,    39,   474,     2,   205,     4,     5,     6,
    27582918       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    27592919      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    27602920       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,
     2921      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27742922       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,
     2923       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2924      35,     0,    36,     0,     0,    38,    39,     2,   205,     4,
     2925       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    28332926      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    28342927      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2835        0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     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
     2943static 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,
     3159      -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,
    28363309      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,
    2895       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,
    2928        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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,
     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,
     3339      -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,
     3433      -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,
    29703483       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    29713484      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,
     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,
     3570       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3571      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3572      -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,
     3595      -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,
     3653      -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,
     3691      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     3692      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3693      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3694     118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
     3695       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3696      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,
     3699      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3700      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
     3701      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
     3702      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3703      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     3704      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3705      -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,
    29783738       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    29793739      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,
     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,
    29933769       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 
    3008 static 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,
     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,
    32773776      -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,
     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,
    32913784      -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,
    33293785      -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,
     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,
    33543792      -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,
     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,
    33773799      -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,
    33803800      -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,
     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,
    33933807      -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,
     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,
    33973818      -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,
     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,
    34033847      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    34043848      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,
     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,
    34243873      -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,
     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,
    34883888      -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,
     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,
    36473893      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    36483894      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,
     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,
    36593912      -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,
     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,
    36643934      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,
     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,
    36903945      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    36913946      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,
     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,
    36943956      -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,
     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,
    36974017      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    36984018      -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36994019      -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,
     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,
    37094031      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,
    3774        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3775       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3776       25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
    3777       -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,
    3778       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -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,
    3783       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3784       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3785      115,    -1,    -1,   118,   119,     3,     4,     5,     6,     7,
    3786        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3787       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3788       -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
    3789       -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3790       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3791       -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
    3792       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3793       -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
    3794       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3795       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3796       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    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,
     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,
    38094057       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    38104058      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,
     4059      24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,
     4060      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
    38134061      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38144062      -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,
    3821        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3822       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3823       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3824       -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3825       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3826       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3827       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3828       -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
    3829       -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
    3830       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3831       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3832      118,   119,     4,     5,     6,     7,     8,     9,    10,    11,
     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,
    38334066      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    38344067      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     
    38374070      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38384071      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    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,
     4072      -1,    -1,    74,    75,     3,     4,     5,     6,     7,     8,
    39784073       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    39794074      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    39804075      -1,    30,    31,    32,    -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,
     4076      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39944077      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    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,
     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,
    40534081      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    40544082      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    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,
     4083      -1,    -1,    39,    -1,    10,    11,    12,    13,    14,    15,
    41994084      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4200       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    4201       -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     4085      26,    27,    -1,    -1,    30,    31,    32,    33,    34,    35,
     4086      67,    -1,    69,    39,    71,    -1,    -1,    74,    75,    -1,
    42024087      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    42034088      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    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
     4089      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75
    42204090};
    42214091
     
    42284098      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    42294099      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    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,
     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,
    42564126     122,   123,   136,   140,   141,   142,   143,   148,   149,   150,
    42574127     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
    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
     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
    43844255};
    43854256
     
    52185089
    52195090/* Line 1806 of yacc.c  */
    5220 #line 290 "parser.yy"
     5091#line 292 "parser.yy"
    52215092    {
    52225093                        typedefTable.enterScope();
     
    52275098
    52285099/* Line 1806 of yacc.c  */
    5229 #line 296 "parser.yy"
     5100#line 298 "parser.yy"
    52305101    {
    52315102                        typedefTable.leaveScope();
     
    52365107
    52375108/* Line 1806 of yacc.c  */
    5238 #line 305 "parser.yy"
     5109#line 307 "parser.yy"
    52395110    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    52405111    break;
     
    52435114
    52445115/* Line 1806 of yacc.c  */
    5245 #line 306 "parser.yy"
     5116#line 308 "parser.yy"
    52465117    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    52475118    break;
     
    52505121
    52515122/* Line 1806 of yacc.c  */
    5252 #line 307 "parser.yy"
     5123#line 309 "parser.yy"
    52535124    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    52545125    break;
     
    52575128
    52585129/* Line 1806 of yacc.c  */
    5259 #line 332 "parser.yy"
     5130#line 334 "parser.yy"
    52605131    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    52615132    break;
     
    52645135
    52655136/* Line 1806 of yacc.c  */
    5266 #line 333 "parser.yy"
     5137#line 335 "parser.yy"
    52675138    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    52685139    break;
    52695140
    52705141  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:
    52785142
    52795143/* Line 1806 of yacc.c  */
     
    52825146    break;
    52835147
     5148  case 19:
     5149
     5150/* Line 1806 of yacc.c  */
     5151#line 344 "parser.yy"
     5152    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5153    break;
     5154
    52845155  case 20:
    52855156
    52865157/* Line 1806 of yacc.c  */
    5287 #line 344 "parser.yy"
     5158#line 346 "parser.yy"
    52885159    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    52895160    break;
     
    52925163
    52935164/* Line 1806 of yacc.c  */
    5294 #line 346 "parser.yy"
     5165#line 348 "parser.yy"
    52955166    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    52965167    break;
     
    52995170
    53005171/* Line 1806 of yacc.c  */
    5301 #line 356 "parser.yy"
     5172#line 358 "parser.yy"
    53025173    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    53035174    break;
     
    53065177
    53075178/* Line 1806 of yacc.c  */
    5308 #line 358 "parser.yy"
     5179#line 360 "parser.yy"
    53095180    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    53105181    break;
     
    53135184
    53145185/* Line 1806 of yacc.c  */
    5315 #line 362 "parser.yy"
     5186#line 364 "parser.yy"
    53165187    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    53175188    break;
     
    53205191
    53215192/* Line 1806 of yacc.c  */
    5322 #line 365 "parser.yy"
     5193#line 367 "parser.yy"
    53235194    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    53245195    break;
     
    53275198
    53285199/* Line 1806 of yacc.c  */
    5329 #line 368 "parser.yy"
     5200#line 370 "parser.yy"
    53305201    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    53315202    break;
     
    53345205
    53355206/* Line 1806 of yacc.c  */
    5336 #line 370 "parser.yy"
     5207#line 372 "parser.yy"
    53375208    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    53385209    break;
     
    53415212
    53425213/* Line 1806 of yacc.c  */
    5343 #line 372 "parser.yy"
     5214#line 374 "parser.yy"
    53445215    { (yyval.en) = new CompoundLiteralNode( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ); }
    53455216    break;
     
    53485219
    53495220/* Line 1806 of yacc.c  */
    5350 #line 374 "parser.yy"
     5221#line 376 "parser.yy"
    53515222    {
    53525223                        Token fn; fn.str = new std::string( "?{}" ); // location undefined
     
    53585229
    53595230/* Line 1806 of yacc.c  */
    5360 #line 383 "parser.yy"
     5231#line 385 "parser.yy"
    53615232    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    53625233    break;
     
    53655236
    53665237/* Line 1806 of yacc.c  */
    5367 #line 388 "parser.yy"
     5238#line 390 "parser.yy"
    53685239    { (yyval.en) = 0; }
    53695240    break;
     
    53725243
    53735244/* Line 1806 of yacc.c  */
    5374 #line 391 "parser.yy"
     5245#line 393 "parser.yy"
    53755246    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
    53765247    break;
     
    53795250
    53805251/* Line 1806 of yacc.c  */
    5381 #line 396 "parser.yy"
     5252#line 398 "parser.yy"
    53825253    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
    53835254    break;
     
    53865257
    53875258/* Line 1806 of yacc.c  */
    5388 #line 398 "parser.yy"
     5259#line 400 "parser.yy"
    53895260    { (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) )))); }
    53905261    break;
     
    53935264
    53945265/* Line 1806 of yacc.c  */
    5395 #line 403 "parser.yy"
     5266#line 405 "parser.yy"
    53965267    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    53975268    break;
     
    54005271
    54015272/* Line 1806 of yacc.c  */
    5402 #line 408 "parser.yy"
     5273#line 410 "parser.yy"
    54035274    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    54045275    break;
     
    54075278
    54085279/* Line 1806 of yacc.c  */
    5409 #line 412 "parser.yy"
     5280#line 414 "parser.yy"
    54105281    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    54115282    break;
     
    54145285
    54155286/* Line 1806 of yacc.c  */
    5416 #line 414 "parser.yy"
     5287#line 416 "parser.yy"
    54175288    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    54185289    break;
     
    54215292
    54225293/* Line 1806 of yacc.c  */
    5423 #line 416 "parser.yy"
     5294#line 418 "parser.yy"
    54245295    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    54255296    break;
     
    54285299
    54295300/* Line 1806 of yacc.c  */
    5430 #line 418 "parser.yy"
     5301#line 420 "parser.yy"
    54315302    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    54325303    break;
    54335304
    54345305  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:
    54425306
    54435307/* Line 1806 of yacc.c  */
     
    54465310    break;
    54475311
     5312  case 49:
     5313
     5314/* Line 1806 of yacc.c  */
     5315#line 430 "parser.yy"
     5316    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5317    break;
     5318
    54485319  case 50:
    54495320
    54505321/* Line 1806 of yacc.c  */
    5451 #line 430 "parser.yy"
    5452     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     5322#line 432 "parser.yy"
     5323    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    54535324    break;
    54545325
     
    54565327
    54575328/* Line 1806 of yacc.c  */
    5458 #line 432 "parser.yy"
     5329#line 434 "parser.yy"
     5330    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
     5331    break;
     5332
     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"
    54595344    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    54605345    break;
    54615346
    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"
    5473     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    5474     break;
    5475 
    54765347  case 54:
    54775348
    54785349/* Line 1806 of yacc.c  */
    5479 #line 441 "parser.yy"
    5480     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
     5350#line 440 "parser.yy"
     5351    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    54815352    break;
    54825353
     
    54845355
    54855356/* Line 1806 of yacc.c  */
    5486 #line 443 "parser.yy"
     5357#line 442 "parser.yy"
     5358    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
     5359    break;
     5360
     5361  case 56:
     5362
     5363/* Line 1806 of yacc.c  */
     5364#line 448 "parser.yy"
    54875365    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    54885366    break;
    54895367
    5490   case 56:
    5491 
    5492 /* Line 1806 of yacc.c  */
    5493 #line 445 "parser.yy"
     5368  case 57:
     5369
     5370/* Line 1806 of yacc.c  */
     5371#line 450 "parser.yy"
    54945372    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    54955373    break;
    54965374
    5497   case 57:
    5498 
    5499 /* Line 1806 of yacc.c  */
    5500 #line 447 "parser.yy"
     5375  case 58:
     5376
     5377/* Line 1806 of yacc.c  */
     5378#line 452 "parser.yy"
    55015379    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) )); }
    55025380    break;
    55035381
    5504   case 58:
    5505 
    5506 /* Line 1806 of yacc.c  */
    5507 #line 449 "parser.yy"
     5382  case 59:
     5383
     5384/* Line 1806 of yacc.c  */
     5385#line 454 "parser.yy"
    55085386    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    55095387    break;
    55105388
    5511   case 59:
    5512 
    5513 /* Line 1806 of yacc.c  */
    5514 #line 451 "parser.yy"
     5389  case 60:
     5390
     5391/* Line 1806 of yacc.c  */
     5392#line 456 "parser.yy"
    55155393    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    55165394    break;
    55175395
    5518   case 60:
    5519 
    5520 /* Line 1806 of yacc.c  */
    5521 #line 453 "parser.yy"
     5396  case 61:
     5397
     5398/* Line 1806 of yacc.c  */
     5399#line 458 "parser.yy"
    55225400    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    55235401    break;
    55245402
    5525   case 61:
    5526 
    5527 /* Line 1806 of yacc.c  */
    5528 #line 455 "parser.yy"
     5403  case 62:
     5404
     5405/* Line 1806 of yacc.c  */
     5406#line 460 "parser.yy"
    55295407    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    55305408    break;
    55315409
    5532   case 62:
    5533 
    5534 /* Line 1806 of yacc.c  */
    5535 #line 457 "parser.yy"
     5410  case 63:
     5411
     5412/* Line 1806 of yacc.c  */
     5413#line 462 "parser.yy"
    55365414    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }
    55375415    break;
    55385416
    5539   case 63:
    5540 
    5541 /* Line 1806 of yacc.c  */
    5542 #line 463 "parser.yy"
    5543     { (yyval.en) = new OperatorNode( OperatorNode::PointTo ); }
    5544     break;
    5545 
    55465417  case 64:
    55475418
    55485419/* Line 1806 of yacc.c  */
    55495420#line 464 "parser.yy"
     5421    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); }
     5422    break;
     5423
     5424  case 65:
     5425
     5426/* Line 1806 of yacc.c  */
     5427#line 468 "parser.yy"
    55505428    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    55515429    break;
    55525430
    5553   case 65:
    5554 
    5555 /* Line 1806 of yacc.c  */
    5556 #line 466 "parser.yy"
    5557     { (yyval.en) = new OperatorNode( OperatorNode::And ); }
    5558     break;
    5559 
    55605431  case 66:
    55615432
    55625433/* Line 1806 of yacc.c  */
     5434#line 469 "parser.yy"
     5435    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
     5436    break;
     5437
     5438  case 67:
     5439
     5440/* Line 1806 of yacc.c  */
    55635441#line 470 "parser.yy"
    5564     { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    5565     break;
    5566 
    5567   case 67:
     5442    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
     5443    break;
     5444
     5445  case 68:
    55685446
    55695447/* Line 1806 of yacc.c  */
    55705448#line 471 "parser.yy"
    5571     { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    5572     break;
    5573 
    5574   case 68:
    5575 
    5576 /* Line 1806 of yacc.c  */
    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"
    55855449    { (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) ); }
    55865457    break;
    55875458
     
    55935464    break;
    55945465
    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) ); }
     5466  case 73:
     5467
     5468/* Line 1806 of yacc.c  */
     5469#line 485 "parser.yy"
     5470    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56005471    break;
    56015472
     
    56045475/* Line 1806 of yacc.c  */
    56055476#line 487 "parser.yy"
    5606     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5477    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56075478    break;
    56085479
     
    56115482/* Line 1806 of yacc.c  */
    56125483#line 489 "parser.yy"
    5613     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5614     break;
    5615 
    5616   case 76:
    5617 
    5618 /* Line 1806 of yacc.c  */
    5619 #line 491 "parser.yy"
    56205484    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56215485    break;
    56225486
     5487  case 77:
     5488
     5489/* Line 1806 of yacc.c  */
     5490#line 495 "parser.yy"
     5491    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5492    break;
     5493
    56235494  case 78:
    56245495
    56255496/* Line 1806 of yacc.c  */
    56265497#line 497 "parser.yy"
    5627     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5628     break;
    5629 
    5630   case 79:
    5631 
    5632 /* Line 1806 of yacc.c  */
    5633 #line 499 "parser.yy"
    56345498    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56355499    break;
    56365500
     5501  case 80:
     5502
     5503/* Line 1806 of yacc.c  */
     5504#line 503 "parser.yy"
     5505    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5506    break;
     5507
    56375508  case 81:
    56385509
    56395510/* Line 1806 of yacc.c  */
    56405511#line 505 "parser.yy"
    5641     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5642     break;
    5643 
    5644   case 82:
    5645 
    5646 /* Line 1806 of yacc.c  */
    5647 #line 507 "parser.yy"
    56485512    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56495513    break;
    56505514
     5515  case 83:
     5516
     5517/* Line 1806 of yacc.c  */
     5518#line 511 "parser.yy"
     5519    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5520    break;
     5521
    56515522  case 84:
    56525523
    56535524/* Line 1806 of yacc.c  */
    56545525#line 513 "parser.yy"
    5655     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5526    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56565527    break;
    56575528
     
    56605531/* Line 1806 of yacc.c  */
    56615532#line 515 "parser.yy"
    5662     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5533    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56635534    break;
    56645535
     
    56675538/* Line 1806 of yacc.c  */
    56685539#line 517 "parser.yy"
    5669     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5670     break;
    5671 
    5672   case 87:
    5673 
    5674 /* Line 1806 of yacc.c  */
    5675 #line 519 "parser.yy"
    56765540    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56775541    break;
    56785542
     5543  case 88:
     5544
     5545/* Line 1806 of yacc.c  */
     5546#line 523 "parser.yy"
     5547    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5548    break;
     5549
    56795550  case 89:
    56805551
    56815552/* Line 1806 of yacc.c  */
    56825553#line 525 "parser.yy"
    5683     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5684     break;
    5685 
    5686   case 90:
    5687 
    5688 /* Line 1806 of yacc.c  */
    5689 #line 527 "parser.yy"
    56905554    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56915555    break;
    56925556
    5693   case 92:
    5694 
    5695 /* Line 1806 of yacc.c  */
    5696 #line 533 "parser.yy"
     5557  case 91:
     5558
     5559/* Line 1806 of yacc.c  */
     5560#line 531 "parser.yy"
    56975561    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56985562    break;
    56995563
    5700   case 94:
    5701 
    5702 /* Line 1806 of yacc.c  */
    5703 #line 539 "parser.yy"
     5564  case 93:
     5565
     5566/* Line 1806 of yacc.c  */
     5567#line 537 "parser.yy"
    57045568    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57055569    break;
    57065570
    5707   case 96:
    5708 
    5709 /* Line 1806 of yacc.c  */
    5710 #line 545 "parser.yy"
     5571  case 95:
     5572
     5573/* Line 1806 of yacc.c  */
     5574#line 543 "parser.yy"
    57115575    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57125576    break;
    57135577
    5714   case 98:
    5715 
    5716 /* Line 1806 of yacc.c  */
    5717 #line 551 "parser.yy"
     5578  case 97:
     5579
     5580/* Line 1806 of yacc.c  */
     5581#line 549 "parser.yy"
    57185582    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57195583    break;
    57205584
    5721   case 100:
    5722 
    5723 /* Line 1806 of yacc.c  */
    5724 #line 557 "parser.yy"
     5585  case 99:
     5586
     5587/* Line 1806 of yacc.c  */
     5588#line 555 "parser.yy"
    57255589    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57265590    break;
    57275591
     5592  case 101:
     5593
     5594/* Line 1806 of yacc.c  */
     5595#line 561 "parser.yy"
     5596    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
     5597    break;
     5598
    57285599  case 102:
    57295600
    57305601/* Line 1806 of yacc.c  */
    57315602#line 563 "parser.yy"
     5603    { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5604    break;
     5605
     5606  case 103:
     5607
     5608/* Line 1806 of yacc.c  */
     5609#line 565 "parser.yy"
    57325610    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    57335611    break;
    57345612
    5735   case 103:
    5736 
    5737 /* Line 1806 of yacc.c  */
    5738 #line 565 "parser.yy"
    5739     { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5740     break;
    5741 
    5742   case 104:
    5743 
    5744 /* Line 1806 of yacc.c  */
    5745 #line 567 "parser.yy"
    5746     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
     5613  case 106:
     5614
     5615/* Line 1806 of yacc.c  */
     5616#line 576 "parser.yy"
     5617    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57475618    break;
    57485619
     
    57515622/* Line 1806 of yacc.c  */
    57525623#line 578 "parser.yy"
    5753     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5624    { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57545625    break;
    57555626
     
    57585629/* Line 1806 of yacc.c  */
    57595630#line 580 "parser.yy"
    5760     { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5631    { (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) ); }
    57615632    break;
    57625633
     
    57645635
    57655636/* Line 1806 of yacc.c  */
    5766 #line 582 "parser.yy"
    5767     { (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) ); }
    5768     break;
    5769 
    5770   case 110:
    5771 
    5772 /* Line 1806 of yacc.c  */
    5773 #line 587 "parser.yy"
     5637#line 585 "parser.yy"
    57745638    { (yyval.en) = new NullExprNode; }
    57755639    break;
    57765640
     5641  case 111:
     5642
     5643/* Line 1806 of yacc.c  */
     5644#line 593 "parser.yy"
     5645    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     5646    break;
     5647
    57775648  case 112:
    57785649
    57795650/* Line 1806 of yacc.c  */
    57805651#line 595 "parser.yy"
    5781     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     5652    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    57825653    break;
    57835654
     
    57865657/* Line 1806 of yacc.c  */
    57875658#line 597 "parser.yy"
    5788     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
     5659    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    57895660    break;
    57905661
     
    57935664/* Line 1806 of yacc.c  */
    57945665#line 599 "parser.yy"
    5795     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    5796     break;
    5797 
    5798   case 115:
    5799 
    5800 /* Line 1806 of yacc.c  */
    5801 #line 601 "parser.yy"
    58025666    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    58035667    break;
    58045668
     5669  case 116:
     5670
     5671/* Line 1806 of yacc.c  */
     5672#line 605 "parser.yy"
     5673    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5674    break;
     5675
    58055676  case 117:
    58065677
    58075678/* Line 1806 of yacc.c  */
    5808 #line 607 "parser.yy"
    5809     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5679#line 609 "parser.yy"
     5680    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    58105681    break;
    58115682
     
    58135684
    58145685/* Line 1806 of yacc.c  */
     5686#line 610 "parser.yy"
     5687    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
     5688    break;
     5689
     5690  case 119:
     5691
     5692/* Line 1806 of yacc.c  */
    58155693#line 611 "parser.yy"
    5816     { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    5817     break;
    5818 
    5819   case 119:
     5694    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
     5695    break;
     5696
     5697  case 120:
    58205698
    58215699/* Line 1806 of yacc.c  */
    58225700#line 612 "parser.yy"
    5823     { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    5824     break;
    5825 
    5826   case 120:
     5701    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
     5702    break;
     5703
     5704  case 121:
    58275705
    58285706/* Line 1806 of yacc.c  */
    58295707#line 613 "parser.yy"
    5830     { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    5831     break;
    5832 
    5833   case 121:
     5708    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
     5709    break;
     5710
     5711  case 122:
    58345712
    58355713/* Line 1806 of yacc.c  */
    58365714#line 614 "parser.yy"
    5837     { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    5838     break;
    5839 
    5840   case 122:
     5715    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
     5716    break;
     5717
     5718  case 123:
    58415719
    58425720/* Line 1806 of yacc.c  */
    58435721#line 615 "parser.yy"
    5844     { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    5845     break;
    5846 
    5847   case 123:
     5722    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
     5723    break;
     5724
     5725  case 124:
    58485726
    58495727/* Line 1806 of yacc.c  */
    58505728#line 616 "parser.yy"
    5851     { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    5852     break;
    5853 
    5854   case 124:
     5729    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
     5730    break;
     5731
     5732  case 125:
    58555733
    58565734/* Line 1806 of yacc.c  */
    58575735#line 617 "parser.yy"
    5858     { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    5859     break;
    5860 
    5861   case 125:
     5736    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
     5737    break;
     5738
     5739  case 126:
    58625740
    58635741/* Line 1806 of yacc.c  */
    58645742#line 618 "parser.yy"
    5865     { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    5866     break;
    5867 
    5868   case 126:
    5869 
    5870 /* Line 1806 of yacc.c  */
    5871 #line 619 "parser.yy"
    5872     { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    5873     break;
    5874 
    5875   case 127:
    5876 
    5877 /* Line 1806 of yacc.c  */
    5878 #line 620 "parser.yy"
    58795743    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    58805744    break;
    58815745
     5746  case 128:
     5747
     5748/* Line 1806 of yacc.c  */
     5749#line 624 "parser.yy"
     5750    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5751    break;
     5752
    58825753  case 129:
    58835754
    58845755/* Line 1806 of yacc.c  */
    5885 #line 626 "parser.yy"
    5886     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5887     break;
    5888 
    5889   case 130:
    5890 
    5891 /* Line 1806 of yacc.c  */
    5892 #line 631 "parser.yy"
     5756#line 629 "parser.yy"
    58935757    { (yyval.en) = 0; }
    58945758    break;
    58955759
    5896   case 134:
    5897 
    5898 /* Line 1806 of yacc.c  */
    5899 #line 640 "parser.yy"
     5760  case 133:
     5761
     5762/* Line 1806 of yacc.c  */
     5763#line 638 "parser.yy"
    59005764    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    59015765    break;
    59025766
    5903   case 140:
    5904 
    5905 /* Line 1806 of yacc.c  */
    5906 #line 647 "parser.yy"
     5767  case 139:
     5768
     5769/* Line 1806 of yacc.c  */
     5770#line 645 "parser.yy"
    59075771    {
    59085772                        Token fn; fn.str = new std::string( "^?{}" ); // location undefined
    59095773                        (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
    5910                                 (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ), 0 );
     5774                                (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), (yyvsp[(2) - (6)].en) ))->set_link( (yyvsp[(4) - (6)].en) ) ), 0 );
    59115775                }
    59125776    break;
    59135777
    5914   case 141:
    5915 
    5916 /* Line 1806 of yacc.c  */
    5917 #line 657 "parser.yy"
     5778  case 140:
     5779
     5780/* Line 1806 of yacc.c  */
     5781#line 654 "parser.yy"
    59185782    {
    59195783                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    59215785    break;
    59225786
     5787  case 141:
     5788
     5789/* Line 1806 of yacc.c  */
     5790#line 661 "parser.yy"
     5791    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
     5792    break;
     5793
    59235794  case 142:
    59245795
    59255796/* Line 1806 of yacc.c  */
    5926 #line 664 "parser.yy"
    5927     { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    5928     break;
    5929 
    5930   case 143:
    5931 
    5932 /* Line 1806 of yacc.c  */
    5933 #line 671 "parser.yy"
     5797#line 668 "parser.yy"
    59345798    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    59355799    break;
    59365800
     5801  case 144:
     5802
     5803/* Line 1806 of yacc.c  */
     5804#line 674 "parser.yy"
     5805    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5806    break;
     5807
    59375808  case 145:
    59385809
    59395810/* Line 1806 of yacc.c  */
    5940 #line 677 "parser.yy"
    5941     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5811#line 679 "parser.yy"
     5812    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    59425813    break;
    59435814
     
    59455816
    59465817/* Line 1806 of yacc.c  */
    5947 #line 682 "parser.yy"
     5818#line 681 "parser.yy"
     5819    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
     5820    break;
     5821
     5822  case 147:
     5823
     5824/* Line 1806 of yacc.c  */
     5825#line 683 "parser.yy"
    59485826    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    59495827    break;
    59505828
    5951   case 147:
    5952 
    5953 /* Line 1806 of yacc.c  */
    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"
    5962     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5829  case 150:
     5830
     5831/* Line 1806 of yacc.c  */
     5832#line 690 "parser.yy"
     5833    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    59635834    break;
    59645835
     
    59665837
    59675838/* Line 1806 of yacc.c  */
    5968 #line 693 "parser.yy"
    5969     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5839#line 695 "parser.yy"
     5840    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    59705841    break;
    59715842
     
    59735844
    59745845/* Line 1806 of yacc.c  */
    5975 #line 698 "parser.yy"
    5976     { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
     5846#line 701 "parser.yy"
     5847    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    59775848    break;
    59785849
     
    59805851
    59815852/* Line 1806 of yacc.c  */
    5982 #line 704 "parser.yy"
    5983     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5853#line 703 "parser.yy"
     5854    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    59845855    break;
    59855856
     
    59875858
    59885859/* Line 1806 of yacc.c  */
    5989 #line 706 "parser.yy"
    5990     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
     5860#line 705 "parser.yy"
     5861    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    59915862    break;
    59925863
     
    59945865
    59955866/* Line 1806 of yacc.c  */
    5996 #line 708 "parser.yy"
    5997     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5867#line 707 "parser.yy"
     5868    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
    59985869    break;
    59995870
     
    60015872
    60025873/* Line 1806 of yacc.c  */
    6003 #line 710 "parser.yy"
    6004     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
     5874#line 712 "parser.yy"
     5875    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    60055876    break;
    60065877
     
    60085879
    60095880/* Line 1806 of yacc.c  */
    6010 #line 715 "parser.yy"
    6011     { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5881#line 714 "parser.yy"
     5882    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    60125883    break;
    60135884
     
    60155886
    60165887/* Line 1806 of yacc.c  */
    6017 #line 717 "parser.yy"
    6018     { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
     5888#line 721 "parser.yy"
     5889    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    60195890    break;
    60205891
     
    60225893
    60235894/* Line 1806 of yacc.c  */
    6024 #line 724 "parser.yy"
    6025     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    6026     break;
    6027 
    6028   case 160:
    6029 
    6030 /* Line 1806 of yacc.c  */
    6031 #line 726 "parser.yy"
     5895#line 723 "parser.yy"
    60325896    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    60335897    break;
    60345898
     5899  case 162:
     5900
     5901/* Line 1806 of yacc.c  */
     5902#line 730 "parser.yy"
     5903    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
     5904    break;
     5905
    60355906  case 163:
    60365907
    60375908/* Line 1806 of yacc.c  */
    6038 #line 733 "parser.yy"
    6039     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
     5909#line 734 "parser.yy"
     5910    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    60405911    break;
    60415912
     
    60435914
    60445915/* Line 1806 of yacc.c  */
    6045 #line 737 "parser.yy"
    6046     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    6047     break;
    6048 
    6049   case 165:
    6050 
    6051 /* Line 1806 of yacc.c  */
    6052 #line 738 "parser.yy"
     5916#line 735 "parser.yy"
    60535917    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    60545918    break;
    60555919
     5920  case 166:
     5921
     5922/* Line 1806 of yacc.c  */
     5923#line 741 "parser.yy"
     5924    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
     5925    break;
     5926
    60565927  case 167:
    60575928
    60585929/* Line 1806 of yacc.c  */
    6059 #line 744 "parser.yy"
    6060     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
     5930#line 745 "parser.yy"
     5931    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    60615932    break;
    60625933
     
    60645935
    60655936/* Line 1806 of yacc.c  */
    6066 #line 748 "parser.yy"
     5937#line 750 "parser.yy"
     5938    { (yyval.sn) = 0; }
     5939    break;
     5940
     5941  case 170:
     5942
     5943/* Line 1806 of yacc.c  */
     5944#line 756 "parser.yy"
    60675945    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    60685946    break;
    60695947
    6070   case 169:
    6071 
    6072 /* Line 1806 of yacc.c  */
    6073 #line 753 "parser.yy"
     5948  case 171:
     5949
     5950/* Line 1806 of yacc.c  */
     5951#line 758 "parser.yy"
     5952    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5953    break;
     5954
     5955  case 172:
     5956
     5957/* Line 1806 of yacc.c  */
     5958#line 763 "parser.yy"
    60745959    { (yyval.sn) = 0; }
    60755960    break;
    60765961
    6077   case 171:
    6078 
    6079 /* Line 1806 of yacc.c  */
    6080 #line 759 "parser.yy"
     5962  case 174:
     5963
     5964/* Line 1806 of yacc.c  */
     5965#line 769 "parser.yy"
    60815966    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    60825967    break;
    60835968
    6084   case 172:
    6085 
    6086 /* Line 1806 of yacc.c  */
    6087 #line 761 "parser.yy"
     5969  case 175:
     5970
     5971/* Line 1806 of yacc.c  */
     5972#line 771 "parser.yy"
     5973    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
     5974    break;
     5975
     5976  case 176:
     5977
     5978/* Line 1806 of yacc.c  */
     5979#line 773 "parser.yy"
    60885980    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    60895981    break;
    60905982
    6091   case 173:
    6092 
    6093 /* Line 1806 of yacc.c  */
    6094 #line 766 "parser.yy"
     5983  case 177:
     5984
     5985/* Line 1806 of yacc.c  */
     5986#line 775 "parser.yy"
     5987    { (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) ))))); }
     5988    break;
     5989
     5990  case 178:
     5991
     5992/* Line 1806 of yacc.c  */
     5993#line 780 "parser.yy"
    60955994    { (yyval.sn) = 0; }
    60965995    break;
    60975996
    6098   case 175:
    6099 
    6100 /* Line 1806 of yacc.c  */
    6101 #line 772 "parser.yy"
    6102     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    6103     break;
    6104 
    6105   case 176:
    6106 
    6107 /* Line 1806 of yacc.c  */
    6108 #line 774 "parser.yy"
    6109     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
    6110     break;
    6111 
    6112   case 177:
    6113 
    6114 /* Line 1806 of yacc.c  */
    6115 #line 776 "parser.yy"
    6116     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    6117     break;
    6118 
    6119   case 178:
    6120 
    6121 /* Line 1806 of yacc.c  */
    6122 #line 778 "parser.yy"
    6123     { (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) ))))); }
    6124     break;
    6125 
    6126   case 179:
    6127 
    6128 /* Line 1806 of yacc.c  */
    6129 #line 783 "parser.yy"
    6130     { (yyval.sn) = 0; }
     5997  case 180:
     5998
     5999/* Line 1806 of yacc.c  */
     6000#line 785 "parser.yy"
     6001    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    61316002    break;
    61326003
     
    61346005
    61356006/* Line 1806 of yacc.c  */
    6136 #line 788 "parser.yy"
     6007#line 786 "parser.yy"
    61376008    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    61386009    break;
     
    61416012
    61426013/* Line 1806 of yacc.c  */
    6143 #line 789 "parser.yy"
    6144     { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
     6014#line 791 "parser.yy"
     6015    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    61456016    break;
    61466017
     
    61486019
    61496020/* Line 1806 of yacc.c  */
    6150 #line 794 "parser.yy"
    6151     { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     6021#line 793 "parser.yy"
     6022    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    61526023    break;
    61536024
     
    61556026
    61566027/* Line 1806 of yacc.c  */
    6157 #line 796 "parser.yy"
    6158     { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
     6028#line 795 "parser.yy"
     6029    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    61596030    break;
    61606031
     
    61626033
    61636034/* Line 1806 of yacc.c  */
    6164 #line 798 "parser.yy"
    6165     { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
     6035#line 800 "parser.yy"
     6036    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    61666037    break;
    61676038
     
    61696040
    61706041/* Line 1806 of yacc.c  */
    6171 #line 803 "parser.yy"
    6172     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     6042#line 802 "parser.yy"
     6043    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    61736044    break;
    61746045
     
    61766047
    61776048/* Line 1806 of yacc.c  */
    6178 #line 805 "parser.yy"
    6179     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     6049#line 807 "parser.yy"
     6050    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    61806051    break;
    61816052
     
    61836054
    61846055/* Line 1806 of yacc.c  */
    6185 #line 810 "parser.yy"
    6186     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
     6056#line 811 "parser.yy"
     6057    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    61876058    break;
    61886059
     
    61916062/* Line 1806 of yacc.c  */
    61926063#line 814 "parser.yy"
    6193     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
     6064    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    61946065    break;
    61956066
     
    61976068
    61986069/* Line 1806 of yacc.c  */
    6199 #line 817 "parser.yy"
    6200     { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
     6070#line 818 "parser.yy"
     6071    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    62016072    break;
    62026073
     
    62056076/* Line 1806 of yacc.c  */
    62066077#line 821 "parser.yy"
    6207     { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
     6078    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    62086079    break;
    62096080
     
    62116082
    62126083/* Line 1806 of yacc.c  */
    6213 #line 824 "parser.yy"
    6214     { (yyval.sn) = new StatementNode( StatementNode::Break ); }
     6084#line 825 "parser.yy"
     6085    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    62156086    break;
    62166087
     
    62186089
    62196090/* Line 1806 of yacc.c  */
    6220 #line 828 "parser.yy"
    6221     { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     6091#line 827 "parser.yy"
     6092    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    62226093    break;
    62236094
     
    62256096
    62266097/* Line 1806 of yacc.c  */
    6227 #line 830 "parser.yy"
    6228     { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
     6098#line 829 "parser.yy"
     6099    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    62296100    break;
    62306101
     
    62326103
    62336104/* Line 1806 of yacc.c  */
    6234 #line 832 "parser.yy"
     6105#line 833 "parser.yy"
    62356106    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    62366107    break;
     
    62396110
    62406111/* Line 1806 of yacc.c  */
    6241 #line 836 "parser.yy"
    6242     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     6112#line 835 "parser.yy"
     6113    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
    62436114    break;
    62446115
     
    62466117
    62476118/* Line 1806 of yacc.c  */
    6248 #line 838 "parser.yy"
    6249     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
     6119#line 842 "parser.yy"
     6120    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    62506121    break;
    62516122
     
    62536124
    62546125/* Line 1806 of yacc.c  */
    6255 #line 845 "parser.yy"
     6126#line 844 "parser.yy"
    62566127    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    62576128    break;
     
    62606131
    62616132/* Line 1806 of yacc.c  */
    6262 #line 847 "parser.yy"
    6263     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    6264     break;
    6265 
    6266   case 200:
    6267 
    6268 /* Line 1806 of yacc.c  */
    6269 #line 849 "parser.yy"
     6133#line 846 "parser.yy"
    62706134    {
    62716135                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    62746138    break;
    62756139
     6140  case 201:
     6141
     6142/* Line 1806 of yacc.c  */
     6143#line 857 "parser.yy"
     6144    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6145    break;
     6146
    62766147  case 202:
    62776148
    62786149/* Line 1806 of yacc.c  */
    6279 #line 860 "parser.yy"
     6150#line 859 "parser.yy"
     6151    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6152    break;
     6153
     6154  case 203:
     6155
     6156/* Line 1806 of yacc.c  */
     6157#line 861 "parser.yy"
    62806158    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    62816159    break;
    62826160
    6283   case 203:
    6284 
    6285 /* Line 1806 of yacc.c  */
    6286 #line 862 "parser.yy"
     6161  case 204:
     6162
     6163/* Line 1806 of yacc.c  */
     6164#line 863 "parser.yy"
    62876165    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    62886166    break;
    62896167
    6290   case 204:
    6291 
    6292 /* Line 1806 of yacc.c  */
    6293 #line 864 "parser.yy"
    6294     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    6295     break;
    6296 
    62976168  case 205:
    62986169
    62996170/* Line 1806 of yacc.c  */
    6300 #line 866 "parser.yy"
    6301     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6171#line 868 "parser.yy"
     6172    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    63026173    break;
    63036174
     
    63056176
    63066177/* Line 1806 of yacc.c  */
    6307 #line 871 "parser.yy"
     6178#line 870 "parser.yy"
     6179    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
     6180    break;
     6181
     6182  case 207:
     6183
     6184/* Line 1806 of yacc.c  */
     6185#line 872 "parser.yy"
    63086186    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    63096187    break;
    63106188
    6311   case 207:
    6312 
    6313 /* Line 1806 of yacc.c  */
    6314 #line 873 "parser.yy"
     6189  case 208:
     6190
     6191/* Line 1806 of yacc.c  */
     6192#line 874 "parser.yy"
    63156193    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    63166194    break;
    63176195
    6318   case 208:
    6319 
    6320 /* Line 1806 of yacc.c  */
    6321 #line 875 "parser.yy"
    6322     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    6323     break;
    6324 
    63256196  case 209:
    63266197
    63276198/* Line 1806 of yacc.c  */
    6328 #line 877 "parser.yy"
    6329     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    6330     break;
    6331 
    6332   case 210:
    6333 
    6334 /* Line 1806 of yacc.c  */
    6335 #line 882 "parser.yy"
     6199#line 879 "parser.yy"
    63366200    {
    63376201                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    63406204    break;
    63416205
    6342   case 212:
    6343 
    6344 /* Line 1806 of yacc.c  */
    6345 #line 896 "parser.yy"
     6206  case 211:
     6207
     6208/* Line 1806 of yacc.c  */
     6209#line 893 "parser.yy"
    63466210    {
    63476211                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63506214    break;
    63516215
     6216  case 212:
     6217
     6218/* Line 1806 of yacc.c  */
     6219#line 898 "parser.yy"
     6220    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     6221    break;
     6222
    63526223  case 213:
    63536224
    63546225/* Line 1806 of yacc.c  */
    6355 #line 901 "parser.yy"
    6356     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    6357     break;
    6358 
    6359   case 214:
    6360 
    6361 /* Line 1806 of yacc.c  */
    6362 #line 903 "parser.yy"
     6226#line 900 "parser.yy"
    63636227    {
    63646228                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63676231    break;
    63686232
     6233  case 215:
     6234
     6235/* Line 1806 of yacc.c  */
     6236#line 909 "parser.yy"
     6237    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     6238    break;
     6239
    63696240  case 216:
    63706241
    63716242/* Line 1806 of yacc.c  */
    6372 #line 912 "parser.yy"
    6373     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     6243#line 911 "parser.yy"
     6244    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    63746245    break;
    63756246
     
    63776248
    63786249/* Line 1806 of yacc.c  */
    6379 #line 914 "parser.yy"
    6380     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     6250#line 913 "parser.yy"
     6251    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    63816252    break;
    63826253
     
    63846255
    63856256/* Line 1806 of yacc.c  */
    6386 #line 916 "parser.yy"
    6387     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     6257#line 915 "parser.yy"
     6258    { (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) ); }
    63886259    break;
    63896260
     
    63916262
    63926263/* Line 1806 of yacc.c  */
    6393 #line 918 "parser.yy"
    6394     { (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) ); }
     6264#line 917 "parser.yy"
     6265    { (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) ); }
    63956266    break;
    63966267
     
    63986269
    63996270/* Line 1806 of yacc.c  */
    6400 #line 920 "parser.yy"
    6401     { (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) ); }
     6271#line 922 "parser.yy"
     6272    { (yyval.flag) = false; }
    64026273    break;
    64036274
     
    64056276
    64066277/* Line 1806 of yacc.c  */
    6407 #line 925 "parser.yy"
    6408     { (yyval.flag) = false; }
     6278#line 924 "parser.yy"
     6279    { (yyval.flag) = true; }
    64096280    break;
    64106281
     
    64126283
    64136284/* Line 1806 of yacc.c  */
    6414 #line 927 "parser.yy"
    6415     { (yyval.flag) = true; }
    6416     break;
    6417 
    6418   case 223:
    6419 
    6420 /* Line 1806 of yacc.c  */
    6421 #line 932 "parser.yy"
     6285#line 929 "parser.yy"
    64226286    { (yyval.en) = 0; }
    64236287    break;
    64246288
     6289  case 225:
     6290
     6291/* Line 1806 of yacc.c  */
     6292#line 936 "parser.yy"
     6293    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     6294    break;
     6295
    64256296  case 226:
    64266297
    64276298/* Line 1806 of yacc.c  */
    6428 #line 939 "parser.yy"
    6429     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     6299#line 941 "parser.yy"
     6300    { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
    64306301    break;
    64316302
     
    64336304
    64346305/* Line 1806 of yacc.c  */
    6435 #line 944 "parser.yy"
    6436     { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
     6306#line 943 "parser.yy"
     6307    { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
    64376308    break;
    64386309
     
    64406311
    64416312/* Line 1806 of yacc.c  */
    6442 #line 946 "parser.yy"
    6443     { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
     6313#line 948 "parser.yy"
     6314    { (yyval.constant) = 0; }
    64446315    break;
    64456316
     
    64476318
    64486319/* Line 1806 of yacc.c  */
    6449 #line 951 "parser.yy"
    6450     { (yyval.constant) = 0; }
     6320#line 950 "parser.yy"
     6321    { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
    64516322    break;
    64526323
     
    64546325
    64556326/* Line 1806 of yacc.c  */
    6456 #line 953 "parser.yy"
    6457     { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
     6327#line 952 "parser.yy"
     6328    { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    64586329    break;
    64596330
     
    64616332
    64626333/* Line 1806 of yacc.c  */
    6463 #line 955 "parser.yy"
    6464     { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
     6334#line 957 "parser.yy"
     6335    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    64656336    break;
    64666337
     
    64686339
    64696340/* Line 1806 of yacc.c  */
    6470 #line 960 "parser.yy"
    6471     { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
     6341#line 959 "parser.yy"
     6342    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    64726343    break;
    64736344
     
    64756346
    64766347/* Line 1806 of yacc.c  */
    6477 #line 962 "parser.yy"
    6478     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    6479     break;
    6480 
    6481   case 234:
    6482 
    6483 /* Line 1806 of yacc.c  */
    6484 #line 969 "parser.yy"
     6348#line 966 "parser.yy"
    64856349    { (yyval.decl) = 0; }
    64866350    break;
    64876351
     6352  case 236:
     6353
     6354/* Line 1806 of yacc.c  */
     6355#line 973 "parser.yy"
     6356    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6357    break;
     6358
    64886359  case 237:
    64896360
    64906361/* Line 1806 of yacc.c  */
    6491 #line 976 "parser.yy"
     6362#line 978 "parser.yy"
     6363    { (yyval.decl) = 0; }
     6364    break;
     6365
     6366  case 240:
     6367
     6368/* Line 1806 of yacc.c  */
     6369#line 985 "parser.yy"
    64926370    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    64936371    break;
    64946372
    6495   case 238:
    6496 
    6497 /* Line 1806 of yacc.c  */
    6498 #line 981 "parser.yy"
    6499     { (yyval.decl) = 0; }
    6500     break;
    6501 
    6502   case 241:
    6503 
    6504 /* Line 1806 of yacc.c  */
    6505 #line 988 "parser.yy"
    6506     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6373  case 245:
     6374
     6375/* Line 1806 of yacc.c  */
     6376#line 999 "parser.yy"
     6377    {}
    65076378    break;
    65086379
     
    65106381
    65116382/* Line 1806 of yacc.c  */
    6512 #line 1002 "parser.yy"
     6383#line 1000 "parser.yy"
    65136384    {}
    65146385    break;
    65156386
    6516   case 247:
    6517 
    6518 /* Line 1806 of yacc.c  */
    6519 #line 1003 "parser.yy"
    6520     {}
    6521     break;
    6522 
    6523   case 255:
    6524 
    6525 /* Line 1806 of yacc.c  */
    6526 #line 1032 "parser.yy"
     6387  case 254:
     6388
     6389/* Line 1806 of yacc.c  */
     6390#line 1029 "parser.yy"
    65276391    {
    65286392                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65316395    break;
    65326396
    6533   case 256:
    6534 
    6535 /* Line 1806 of yacc.c  */
    6536 #line 1039 "parser.yy"
     6397  case 255:
     6398
     6399/* Line 1806 of yacc.c  */
     6400#line 1036 "parser.yy"
    65376401    {
    65386402                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65416405    break;
    65426406
    6543   case 257:
    6544 
    6545 /* Line 1806 of yacc.c  */
    6546 #line 1044 "parser.yy"
     6407  case 256:
     6408
     6409/* Line 1806 of yacc.c  */
     6410#line 1041 "parser.yy"
    65476411    {
    65486412                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    65516415    break;
    65526416
    6553   case 258:
    6554 
    6555 /* Line 1806 of yacc.c  */
    6556 #line 1054 "parser.yy"
     6417  case 257:
     6418
     6419/* Line 1806 of yacc.c  */
     6420#line 1051 "parser.yy"
    65576421    {
    65586422                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    65616425    break;
    65626426
    6563   case 259:
    6564 
    6565 /* Line 1806 of yacc.c  */
    6566 #line 1059 "parser.yy"
     6427  case 258:
     6428
     6429/* Line 1806 of yacc.c  */
     6430#line 1056 "parser.yy"
    65676431    {
    65686432                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    65716435    break;
    65726436
    6573   case 260:
    6574 
    6575 /* Line 1806 of yacc.c  */
    6576 #line 1064 "parser.yy"
     6437  case 259:
     6438
     6439/* Line 1806 of yacc.c  */
     6440#line 1061 "parser.yy"
    65776441    {
    65786442                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    65816445    break;
    65826446
    6583   case 261:
    6584 
    6585 /* Line 1806 of yacc.c  */
    6586 #line 1072 "parser.yy"
     6447  case 260:
     6448
     6449/* Line 1806 of yacc.c  */
     6450#line 1069 "parser.yy"
    65876451    {
    65886452                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65916455    break;
    65926456
    6593   case 262:
    6594 
    6595 /* Line 1806 of yacc.c  */
    6596 #line 1077 "parser.yy"
     6457  case 261:
     6458
     6459/* Line 1806 of yacc.c  */
     6460#line 1074 "parser.yy"
    65976461    {
    65986462                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66016465    break;
    66026466
    6603   case 263:
    6604 
    6605 /* Line 1806 of yacc.c  */
    6606 #line 1082 "parser.yy"
     6467  case 262:
     6468
     6469/* Line 1806 of yacc.c  */
     6470#line 1079 "parser.yy"
    66076471    {
    66086472                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66116475    break;
    66126476
    6613   case 264:
    6614 
    6615 /* Line 1806 of yacc.c  */
    6616 #line 1087 "parser.yy"
     6477  case 263:
     6478
     6479/* Line 1806 of yacc.c  */
     6480#line 1084 "parser.yy"
    66176481    {
    66186482                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66216485    break;
    66226486
    6623   case 265:
    6624 
    6625 /* Line 1806 of yacc.c  */
    6626 #line 1092 "parser.yy"
     6487  case 264:
     6488
     6489/* Line 1806 of yacc.c  */
     6490#line 1089 "parser.yy"
    66276491    {
    66286492                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    66316495    break;
    66326496
    6633   case 266:
    6634 
    6635 /* Line 1806 of yacc.c  */
    6636 #line 1100 "parser.yy"
     6497  case 265:
     6498
     6499/* Line 1806 of yacc.c  */
     6500#line 1097 "parser.yy"
    66376501    {
    66386502                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    66406504    break;
    66416505
    6642   case 267:
    6643 
    6644 /* Line 1806 of yacc.c  */
    6645 #line 1123 "parser.yy"
     6506  case 266:
     6507
     6508/* Line 1806 of yacc.c  */
     6509#line 1120 "parser.yy"
    66466510    {
    66476511                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    66496513    break;
    66506514
    6651   case 268:
    6652 
    6653 /* Line 1806 of yacc.c  */
    6654 #line 1127 "parser.yy"
     6515  case 267:
     6516
     6517/* Line 1806 of yacc.c  */
     6518#line 1124 "parser.yy"
    66556519    {
    66566520                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    66586522    break;
    66596523
     6524  case 268:
     6525
     6526/* Line 1806 of yacc.c  */
     6527#line 1131 "parser.yy"
     6528    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     6529    break;
     6530
    66606531  case 269:
    66616532
    66626533/* Line 1806 of yacc.c  */
    6663 #line 1134 "parser.yy"
    6664     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     6534#line 1135 "parser.yy"
     6535    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    66656536    break;
    66666537
     
    66686539
    66696540/* Line 1806 of yacc.c  */
    6670 #line 1138 "parser.yy"
    6671     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    6672     break;
    6673 
    6674   case 271:
    6675 
    6676 /* Line 1806 of yacc.c  */
    6677 #line 1143 "parser.yy"
     6541#line 1140 "parser.yy"
    66786542    {
    66796543                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    66826546    break;
    66836547
    6684   case 272:
    6685 
    6686 /* Line 1806 of yacc.c  */
    6687 #line 1148 "parser.yy"
     6548  case 271:
     6549
     6550/* Line 1806 of yacc.c  */
     6551#line 1145 "parser.yy"
    66886552    {
    66896553                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    66926556    break;
    66936557
    6694   case 273:
    6695 
    6696 /* Line 1806 of yacc.c  */
    6697 #line 1153 "parser.yy"
     6558  case 272:
     6559
     6560/* Line 1806 of yacc.c  */
     6561#line 1150 "parser.yy"
    66986562    {
    66996563                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    67026566    break;
    67036567
    6704   case 274:
    6705 
    6706 /* Line 1806 of yacc.c  */
    6707 #line 1164 "parser.yy"
     6568  case 273:
     6569
     6570/* Line 1806 of yacc.c  */
     6571#line 1161 "parser.yy"
    67086572    {
    67096573                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67126576    break;
    67136577
    6714   case 275:
    6715 
    6716 /* Line 1806 of yacc.c  */
    6717 #line 1169 "parser.yy"
     6578  case 274:
     6579
     6580/* Line 1806 of yacc.c  */
     6581#line 1166 "parser.yy"
    67186582    {
    67196583                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67226586    break;
    67236587
    6724   case 276:
    6725 
    6726 /* Line 1806 of yacc.c  */
    6727 #line 1174 "parser.yy"
     6588  case 275:
     6589
     6590/* Line 1806 of yacc.c  */
     6591#line 1171 "parser.yy"
    67286592    {
    67296593                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67326596    break;
    67336597
    6734   case 277:
    6735 
    6736 /* Line 1806 of yacc.c  */
    6737 #line 1179 "parser.yy"
     6598  case 276:
     6599
     6600/* Line 1806 of yacc.c  */
     6601#line 1176 "parser.yy"
    67386602    {
    67396603                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67426606    break;
    67436607
    6744   case 278:
    6745 
    6746 /* Line 1806 of yacc.c  */
    6747 #line 1184 "parser.yy"
     6608  case 277:
     6609
     6610/* Line 1806 of yacc.c  */
     6611#line 1181 "parser.yy"
    67486612    {
    67496613                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67526616    break;
    67536617
    6754   case 279:
    6755 
    6756 /* Line 1806 of yacc.c  */
    6757 #line 1193 "parser.yy"
     6618  case 278:
     6619
     6620/* Line 1806 of yacc.c  */
     6621#line 1190 "parser.yy"
    67586622    {
    67596623                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    67626626    break;
    67636627
    6764   case 280:
    6765 
    6766 /* Line 1806 of yacc.c  */
    6767 #line 1198 "parser.yy"
     6628  case 279:
     6629
     6630/* Line 1806 of yacc.c  */
     6631#line 1195 "parser.yy"
    67686632    {
    67696633                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    67726636    break;
    67736637
    6774   case 285:
    6775 
    6776 /* Line 1806 of yacc.c  */
    6777 #line 1215 "parser.yy"
     6638  case 284:
     6639
     6640/* Line 1806 of yacc.c  */
     6641#line 1212 "parser.yy"
    67786642    {
    67796643                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    67826646    break;
    67836647
    6784   case 286:
    6785 
    6786 /* Line 1806 of yacc.c  */
    6787 #line 1220 "parser.yy"
     6648  case 285:
     6649
     6650/* Line 1806 of yacc.c  */
     6651#line 1217 "parser.yy"
    67886652    {
    67896653                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    67926656    break;
    67936657
    6794   case 295:
    6795 
    6796 /* Line 1806 of yacc.c  */
    6797 #line 1242 "parser.yy"
     6658  case 294:
     6659
     6660/* Line 1806 of yacc.c  */
     6661#line 1239 "parser.yy"
    67986662    { (yyval.decl) = 0; }
    67996663    break;
    68006664
    6801   case 298:
    6802 
    6803 /* Line 1806 of yacc.c  */
    6804 #line 1254 "parser.yy"
     6665  case 297:
     6666
     6667/* Line 1806 of yacc.c  */
     6668#line 1251 "parser.yy"
    68056669    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68066670    break;
    68076671
     6672  case 300:
     6673
     6674/* Line 1806 of yacc.c  */
     6675#line 1262 "parser.yy"
     6676    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6677    break;
     6678
    68086679  case 301:
    68096680
    68106681/* Line 1806 of yacc.c  */
    6811 #line 1265 "parser.yy"
    6812     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6682#line 1264 "parser.yy"
     6683    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    68136684    break;
    68146685
     
    68166687
    68176688/* Line 1806 of yacc.c  */
    6818 #line 1267 "parser.yy"
    6819     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6689#line 1266 "parser.yy"
     6690    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    68206691    break;
    68216692
     
    68236694
    68246695/* Line 1806 of yacc.c  */
    6825 #line 1269 "parser.yy"
    6826     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     6696#line 1268 "parser.yy"
     6697    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    68276698    break;
    68286699
     
    68306701
    68316702/* Line 1806 of yacc.c  */
    6832 #line 1271 "parser.yy"
    6833     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     6703#line 1270 "parser.yy"
     6704    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    68346705    break;
    68356706
     
    68376708
    68386709/* Line 1806 of yacc.c  */
    6839 #line 1273 "parser.yy"
    6840     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    6841     break;
    6842 
    6843   case 306:
    6844 
    6845 /* Line 1806 of yacc.c  */
    6846 #line 1275 "parser.yy"
     6710#line 1272 "parser.yy"
    68476711    {
    68486712                        typedefTable.enterScope();
     
    68506714    break;
    68516715
    6852   case 307:
    6853 
    6854 /* Line 1806 of yacc.c  */
    6855 #line 1279 "parser.yy"
     6716  case 306:
     6717
     6718/* Line 1806 of yacc.c  */
     6719#line 1276 "parser.yy"
    68566720    {
    68576721                        typedefTable.leaveScope();
     
    68606724    break;
    68616725
     6726  case 308:
     6727
     6728/* Line 1806 of yacc.c  */
     6729#line 1285 "parser.yy"
     6730    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6731    break;
     6732
    68626733  case 309:
    68636734
    68646735/* Line 1806 of yacc.c  */
    6865 #line 1288 "parser.yy"
     6736#line 1287 "parser.yy"
     6737    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6738    break;
     6739
     6740  case 311:
     6741
     6742/* Line 1806 of yacc.c  */
     6743#line 1298 "parser.yy"
    68666744    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68676745    break;
    68686746
    6869   case 310:
    6870 
    6871 /* Line 1806 of yacc.c  */
    6872 #line 1290 "parser.yy"
     6747  case 313:
     6748
     6749/* Line 1806 of yacc.c  */
     6750#line 1307 "parser.yy"
     6751    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     6752    break;
     6753
     6754  case 314:
     6755
     6756/* Line 1806 of yacc.c  */
     6757#line 1309 "parser.yy"
     6758    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     6759    break;
     6760
     6761  case 315:
     6762
     6763/* Line 1806 of yacc.c  */
     6764#line 1311 "parser.yy"
     6765    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     6766    break;
     6767
     6768  case 316:
     6769
     6770/* Line 1806 of yacc.c  */
     6771#line 1313 "parser.yy"
     6772    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     6773    break;
     6774
     6775  case 317:
     6776
     6777/* Line 1806 of yacc.c  */
     6778#line 1315 "parser.yy"
     6779    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     6780    break;
     6781
     6782  case 318:
     6783
     6784/* Line 1806 of yacc.c  */
     6785#line 1317 "parser.yy"
     6786    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     6787    break;
     6788
     6789  case 319:
     6790
     6791/* Line 1806 of yacc.c  */
     6792#line 1319 "parser.yy"
     6793    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     6794    break;
     6795
     6796  case 320:
     6797
     6798/* Line 1806 of yacc.c  */
     6799#line 1321 "parser.yy"
     6800    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     6801    break;
     6802
     6803  case 321:
     6804
     6805/* Line 1806 of yacc.c  */
     6806#line 1326 "parser.yy"
     6807    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6808    break;
     6809
     6810  case 322:
     6811
     6812/* Line 1806 of yacc.c  */
     6813#line 1328 "parser.yy"
     6814    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6815    break;
     6816
     6817  case 323:
     6818
     6819/* Line 1806 of yacc.c  */
     6820#line 1330 "parser.yy"
     6821    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6822    break;
     6823
     6824  case 324:
     6825
     6826/* Line 1806 of yacc.c  */
     6827#line 1332 "parser.yy"
     6828    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6829    break;
     6830
     6831  case 325:
     6832
     6833/* Line 1806 of yacc.c  */
     6834#line 1334 "parser.yy"
     6835    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6836    break;
     6837
     6838  case 326:
     6839
     6840/* Line 1806 of yacc.c  */
     6841#line 1336 "parser.yy"
     6842    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6843    break;
     6844
     6845  case 327:
     6846
     6847/* Line 1806 of yacc.c  */
     6848#line 1338 "parser.yy"
     6849    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6850    break;
     6851
     6852  case 328:
     6853
     6854/* Line 1806 of yacc.c  */
     6855#line 1340 "parser.yy"
     6856    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6857    break;
     6858
     6859  case 329:
     6860
     6861/* Line 1806 of yacc.c  */
     6862#line 1342 "parser.yy"
     6863    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6864    break;
     6865
     6866  case 330:
     6867
     6868/* Line 1806 of yacc.c  */
     6869#line 1344 "parser.yy"
     6870    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6871    break;
     6872
     6873  case 331:
     6874
     6875/* Line 1806 of yacc.c  */
     6876#line 1346 "parser.yy"
     6877    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6878    break;
     6879
     6880  case 332:
     6881
     6882/* Line 1806 of yacc.c  */
     6883#line 1348 "parser.yy"
     6884    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6885    break;
     6886
     6887  case 333:
     6888
     6889/* Line 1806 of yacc.c  */
     6890#line 1350 "parser.yy"
     6891    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     6892    break;
     6893
     6894  case 335:
     6895
     6896/* Line 1806 of yacc.c  */
     6897#line 1357 "parser.yy"
     6898    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6899    break;
     6900
     6901  case 336:
     6902
     6903/* Line 1806 of yacc.c  */
     6904#line 1359 "parser.yy"
     6905    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6906    break;
     6907
     6908  case 337:
     6909
     6910/* Line 1806 of yacc.c  */
     6911#line 1361 "parser.yy"
    68736912    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68746913    break;
    68756914
    6876   case 312:
    6877 
    6878 /* Line 1806 of yacc.c  */
    6879 #line 1301 "parser.yy"
     6915  case 338:
     6916
     6917/* Line 1806 of yacc.c  */
     6918#line 1363 "parser.yy"
     6919    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6920    break;
     6921
     6922  case 340:
     6923
     6924/* Line 1806 of yacc.c  */
     6925#line 1369 "parser.yy"
     6926    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6927    break;
     6928
     6929  case 342:
     6930
     6931/* Line 1806 of yacc.c  */
     6932#line 1376 "parser.yy"
     6933    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6934    break;
     6935
     6936  case 343:
     6937
     6938/* Line 1806 of yacc.c  */
     6939#line 1378 "parser.yy"
    68806940    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68816941    break;
    68826942
    6883   case 314:
    6884 
    6885 /* Line 1806 of yacc.c  */
    6886 #line 1310 "parser.yy"
    6887     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6888     break;
    6889 
    6890   case 315:
    6891 
    6892 /* Line 1806 of yacc.c  */
    6893 #line 1312 "parser.yy"
    6894     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6895     break;
    6896 
    6897   case 316:
    6898 
    6899 /* Line 1806 of yacc.c  */
    6900 #line 1314 "parser.yy"
    6901     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6902     break;
    6903 
    6904   case 317:
    6905 
    6906 /* Line 1806 of yacc.c  */
    6907 #line 1316 "parser.yy"
    6908     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6909     break;
    6910 
    6911   case 318:
    6912 
    6913 /* Line 1806 of yacc.c  */
    6914 #line 1318 "parser.yy"
    6915     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    6916     break;
    6917 
    6918   case 319:
    6919 
    6920 /* Line 1806 of yacc.c  */
    6921 #line 1320 "parser.yy"
    6922     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6923     break;
    6924 
    6925   case 320:
    6926 
    6927 /* Line 1806 of yacc.c  */
    6928 #line 1322 "parser.yy"
    6929     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    6930     break;
    6931 
    6932   case 321:
    6933 
    6934 /* Line 1806 of yacc.c  */
    6935 #line 1324 "parser.yy"
    6936     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    6937     break;
    6938 
    6939   case 322:
    6940 
    6941 /* Line 1806 of yacc.c  */
    6942 #line 1329 "parser.yy"
    6943     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6944     break;
    6945 
    6946   case 323:
    6947 
    6948 /* Line 1806 of yacc.c  */
    6949 #line 1331 "parser.yy"
    6950     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6951     break;
    6952 
    6953   case 324:
    6954 
    6955 /* Line 1806 of yacc.c  */
    6956 #line 1333 "parser.yy"
    6957     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6958     break;
    6959 
    6960   case 325:
    6961 
    6962 /* Line 1806 of yacc.c  */
    6963 #line 1335 "parser.yy"
    6964     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6965     break;
    6966 
    6967   case 326:
    6968 
    6969 /* Line 1806 of yacc.c  */
    6970 #line 1337 "parser.yy"
    6971     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    6972     break;
    6973 
    6974   case 327:
    6975 
    6976 /* Line 1806 of yacc.c  */
    6977 #line 1339 "parser.yy"
    6978     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    6979     break;
    6980 
    6981   case 328:
    6982 
    6983 /* Line 1806 of yacc.c  */
    6984 #line 1341 "parser.yy"
    6985     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    6986     break;
    6987 
    6988   case 329:
    6989 
    6990 /* Line 1806 of yacc.c  */
    6991 #line 1343 "parser.yy"
    6992     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    6993     break;
    6994 
    6995   case 330:
    6996 
    6997 /* Line 1806 of yacc.c  */
    6998 #line 1345 "parser.yy"
    6999     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    7000     break;
    7001 
    7002   case 331:
    7003 
    7004 /* Line 1806 of yacc.c  */
    7005 #line 1347 "parser.yy"
    7006     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    7007     break;
    7008 
    7009   case 332:
    7010 
    7011 /* Line 1806 of yacc.c  */
    7012 #line 1349 "parser.yy"
    7013     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    7014     break;
    7015 
    7016   case 333:
    7017 
    7018 /* Line 1806 of yacc.c  */
    7019 #line 1351 "parser.yy"
    7020     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    7021     break;
    7022 
    7023   case 334:
    7024 
    7025 /* Line 1806 of yacc.c  */
    7026 #line 1353 "parser.yy"
    7027     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    7028     break;
    7029 
    7030   case 336:
    7031 
    7032 /* Line 1806 of yacc.c  */
    7033 #line 1360 "parser.yy"
     6943  case 344:
     6944
     6945/* Line 1806 of yacc.c  */
     6946#line 1380 "parser.yy"
     6947    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6948    break;
     6949
     6950  case 345:
     6951
     6952/* Line 1806 of yacc.c  */
     6953#line 1385 "parser.yy"
     6954    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6955    break;
     6956
     6957  case 346:
     6958
     6959/* Line 1806 of yacc.c  */
     6960#line 1387 "parser.yy"
     6961    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6962    break;
     6963
     6964  case 347:
     6965
     6966/* Line 1806 of yacc.c  */
     6967#line 1389 "parser.yy"
     6968    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6969    break;
     6970
     6971  case 348:
     6972
     6973/* Line 1806 of yacc.c  */
     6974#line 1391 "parser.yy"
     6975    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6976    break;
     6977
     6978  case 350:
     6979
     6980/* Line 1806 of yacc.c  */
     6981#line 1397 "parser.yy"
    70346982    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70356983    break;
    70366984
    7037   case 337:
    7038 
    7039 /* Line 1806 of yacc.c  */
    7040 #line 1362 "parser.yy"
     6985  case 351:
     6986
     6987/* Line 1806 of yacc.c  */
     6988#line 1399 "parser.yy"
    70416989    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70426990    break;
    70436991
    7044   case 338:
    7045 
    7046 /* Line 1806 of yacc.c  */
    7047 #line 1364 "parser.yy"
     6992  case 352:
     6993
     6994/* Line 1806 of yacc.c  */
     6995#line 1401 "parser.yy"
    70486996    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    70496997    break;
    70506998
    7051   case 339:
    7052 
    7053 /* Line 1806 of yacc.c  */
    7054 #line 1366 "parser.yy"
    7055     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    7056     break;
    7057 
    7058   case 341:
    7059 
    7060 /* Line 1806 of yacc.c  */
    7061 #line 1372 "parser.yy"
    7062     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7063     break;
    7064 
    7065   case 343:
    7066 
    7067 /* Line 1806 of yacc.c  */
    7068 #line 1379 "parser.yy"
     6999  case 354:
     7000
     7001/* Line 1806 of yacc.c  */
     7002#line 1407 "parser.yy"
    70697003    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70707004    break;
    70717005
    7072   case 344:
    7073 
    7074 /* Line 1806 of yacc.c  */
    7075 #line 1381 "parser.yy"
     7006  case 355:
     7007
     7008/* Line 1806 of yacc.c  */
     7009#line 1409 "parser.yy"
    70767010    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70777011    break;
    70787012
    7079   case 345:
    7080 
    7081 /* Line 1806 of yacc.c  */
    7082 #line 1383 "parser.yy"
    7083     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    7084     break;
    7085 
    7086   case 346:
    7087 
    7088 /* Line 1806 of yacc.c  */
    7089 #line 1388 "parser.yy"
    7090     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    7091     break;
    7092 
    7093   case 347:
    7094 
    7095 /* Line 1806 of yacc.c  */
    7096 #line 1390 "parser.yy"
    7097     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    7098     break;
    7099 
    7100   case 348:
    7101 
    7102 /* Line 1806 of yacc.c  */
    7103 #line 1392 "parser.yy"
    7104     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    7105     break;
    7106 
    7107   case 349:
    7108 
    7109 /* Line 1806 of yacc.c  */
    7110 #line 1394 "parser.yy"
    7111     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    7112     break;
    7113 
    7114   case 351:
    7115 
    7116 /* Line 1806 of yacc.c  */
    7117 #line 1400 "parser.yy"
     7013  case 357:
     7014
     7015/* Line 1806 of yacc.c  */
     7016#line 1415 "parser.yy"
    71187017    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    71197018    break;
    71207019
    7121   case 352:
    7122 
    7123 /* Line 1806 of yacc.c  */
    7124 #line 1402 "parser.yy"
     7020  case 358:
     7021
     7022/* Line 1806 of yacc.c  */
     7023#line 1417 "parser.yy"
    71257024    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71267025    break;
    71277026
    7128   case 353:
    7129 
    7130 /* Line 1806 of yacc.c  */
    7131 #line 1404 "parser.yy"
     7027  case 359:
     7028
     7029/* Line 1806 of yacc.c  */
     7030#line 1419 "parser.yy"
    71327031    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    71337032    break;
    71347033
    7135   case 355:
    7136 
    7137 /* Line 1806 of yacc.c  */
    7138 #line 1410 "parser.yy"
    7139     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7140     break;
    7141 
    7142   case 356:
    7143 
    7144 /* Line 1806 of yacc.c  */
    7145 #line 1412 "parser.yy"
     7034  case 360:
     7035
     7036/* Line 1806 of yacc.c  */
     7037#line 1424 "parser.yy"
     7038    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     7039    break;
     7040
     7041  case 361:
     7042
     7043/* Line 1806 of yacc.c  */
     7044#line 1426 "parser.yy"
     7045    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7046    break;
     7047
     7048  case 362:
     7049
     7050/* Line 1806 of yacc.c  */
     7051#line 1428 "parser.yy"
    71467052    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71477053    break;
    71487054
    7149   case 358:
    7150 
    7151 /* Line 1806 of yacc.c  */
    7152 #line 1418 "parser.yy"
    7153     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7154     break;
    7155 
    7156   case 359:
    7157 
    7158 /* Line 1806 of yacc.c  */
    7159 #line 1420 "parser.yy"
    7160     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7161     break;
    7162 
    7163   case 360:
    7164 
    7165 /* Line 1806 of yacc.c  */
    7166 #line 1422 "parser.yy"
    7167     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7168     break;
    7169 
    7170   case 361:
    7171 
    7172 /* Line 1806 of yacc.c  */
    7173 #line 1427 "parser.yy"
    7174     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    7175     break;
    7176 
    7177   case 362:
    7178 
    7179 /* Line 1806 of yacc.c  */
    7180 #line 1429 "parser.yy"
    7181     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7182     break;
    7183 
    7184   case 363:
    7185 
    7186 /* Line 1806 of yacc.c  */
    7187 #line 1431 "parser.yy"
    7188     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7055  case 365:
     7056
     7057/* Line 1806 of yacc.c  */
     7058#line 1438 "parser.yy"
     7059    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
    71897060    break;
    71907061
     
    71927063
    71937064/* Line 1806 of yacc.c  */
    7194 #line 1441 "parser.yy"
    7195     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
    7196     break;
    7197 
    7198   case 367:
    7199 
    7200 /* Line 1806 of yacc.c  */
    7201 #line 1443 "parser.yy"
     7065#line 1440 "parser.yy"
    72027066    {
    72037067                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    72067070    break;
    72077071
     7072  case 367:
     7073
     7074/* Line 1806 of yacc.c  */
     7075#line 1445 "parser.yy"
     7076    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7077    break;
     7078
    72087079  case 368:
    72097080
    72107081/* Line 1806 of yacc.c  */
    7211 #line 1448 "parser.yy"
    7212     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7082#line 1447 "parser.yy"
     7083    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl)); }
    72137084    break;
    72147085
     
    72167087
    72177088/* Line 1806 of yacc.c  */
    7218 #line 1450 "parser.yy"
    7219     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl)); }
     7089#line 1449 "parser.yy"
     7090    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
    72207091    break;
    72217092
     
    72237094
    72247095/* Line 1806 of yacc.c  */
    7225 #line 1452 "parser.yy"
    7226     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
     7096#line 1451 "parser.yy"
     7097    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    72277098    break;
    72287099
     
    72307101
    72317102/* Line 1806 of yacc.c  */
    7232 #line 1454 "parser.yy"
    7233     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7103#line 1456 "parser.yy"
     7104    { (yyval.aggKey) = DeclarationNode::Struct; }
    72347105    break;
    72357106
     
    72377108
    72387109/* Line 1806 of yacc.c  */
    7239 #line 1459 "parser.yy"
    7240     { (yyval.aggKey) = DeclarationNode::Struct; }
     7110#line 1458 "parser.yy"
     7111    { (yyval.aggKey) = DeclarationNode::Union; }
    72417112    break;
    72427113
     
    72447115
    72457116/* Line 1806 of yacc.c  */
    7246 #line 1461 "parser.yy"
    7247     { (yyval.aggKey) = DeclarationNode::Union; }
     7117#line 1463 "parser.yy"
     7118    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    72487119    break;
    72497120
     
    72517122
    72527123/* Line 1806 of yacc.c  */
    7253 #line 1466 "parser.yy"
    7254     { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    7255     break;
    7256 
    7257   case 375:
    7258 
    7259 /* Line 1806 of yacc.c  */
    7260 #line 1468 "parser.yy"
     7124#line 1465 "parser.yy"
    72617125    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    72627126    break;
    72637127
    7264   case 377:
     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:
    72657136
    72667137/* Line 1806 of yacc.c  */
    72677138#line 1474 "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 )*/; }
     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"
     7146    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    72767147    break;
    72777148
     
    72797150
    72807151/* Line 1806 of yacc.c  */
    7281 #line 1483 "parser.yy"
    7282     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7152#line 1482 "parser.yy"
     7153    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    72837154    break;
    72847155
     
    72867157
    72877158/* Line 1806 of yacc.c  */
    7288 #line 1485 "parser.yy"
    7289     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     7159#line 1484 "parser.yy"
     7160    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    72907161    break;
    72917162
     
    72937164
    72947165/* Line 1806 of yacc.c  */
    7295 #line 1487 "parser.yy"
    7296     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7166#line 1489 "parser.yy"
     7167    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72977168    break;
    72987169
     
    73007171
    73017172/* Line 1806 of yacc.c  */
    7302 #line 1492 "parser.yy"
    7303     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7173#line 1491 "parser.yy"
     7174    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    73047175    break;
    73057176
     
    73077178
    73087179/* Line 1806 of yacc.c  */
    7309 #line 1494 "parser.yy"
    7310     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     7180#line 1496 "parser.yy"
     7181    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    73117182    break;
    73127183
     
    73147185
    73157186/* Line 1806 of yacc.c  */
    7316 #line 1499 "parser.yy"
    7317     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     7187#line 1498 "parser.yy"
     7188    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    73187189    break;
    73197190
     
    73227193/* Line 1806 of yacc.c  */
    73237194#line 1501 "parser.yy"
    7324     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7195    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    73257196    break;
    73267197
     
    73327203    break;
    73337204
    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) ); }
     7205  case 390:
     7206
     7207/* Line 1806 of yacc.c  */
     7208#line 1510 "parser.yy"
     7209    { (yyval.en) = 0; }
    73397210    break;
    73407211
     
    73427213
    73437214/* Line 1806 of yacc.c  */
    7344 #line 1513 "parser.yy"
    7345     { (yyval.en) = 0; }
     7215#line 1512 "parser.yy"
     7216    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    73467217    break;
    73477218
     
    73497220
    73507221/* Line 1806 of yacc.c  */
    7351 #line 1515 "parser.yy"
    7352     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    7353     break;
    7354 
    7355   case 393:
    7356 
    7357 /* Line 1806 of yacc.c  */
    7358 #line 1520 "parser.yy"
     7222#line 1517 "parser.yy"
    73597223    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    73607224    break;
    73617225
     7226  case 394:
     7227
     7228/* Line 1806 of yacc.c  */
     7229#line 1526 "parser.yy"
     7230    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     7231    break;
     7232
    73627233  case 395:
    73637234
    73647235/* Line 1806 of yacc.c  */
    7365 #line 1529 "parser.yy"
    7366     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7367     break;
    7368 
    7369   case 396:
    7370 
    7371 /* Line 1806 of yacc.c  */
    7372 #line 1531 "parser.yy"
     7236#line 1528 "parser.yy"
    73737237    {
    73747238                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    73777241    break;
    73787242
     7243  case 396:
     7244
     7245/* Line 1806 of yacc.c  */
     7246#line 1533 "parser.yy"
     7247    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7248    break;
     7249
    73797250  case 397:
    73807251
    73817252/* Line 1806 of yacc.c  */
    7382 #line 1536 "parser.yy"
    7383     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7253#line 1535 "parser.yy"
     7254    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    73847255    break;
    73857256
     
    73877258
    73887259/* Line 1806 of yacc.c  */
    7389 #line 1538 "parser.yy"
    7390     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     7260#line 1540 "parser.yy"
     7261    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    73917262    break;
    73927263
     
    73947265
    73957266/* Line 1806 of yacc.c  */
    7396 #line 1543 "parser.yy"
    7397     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7267#line 1542 "parser.yy"
     7268    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    73987269    break;
    73997270
     
    74017272
    74027273/* Line 1806 of yacc.c  */
    7403 #line 1545 "parser.yy"
    7404     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     7274#line 1547 "parser.yy"
     7275    { (yyval.en) = 0; }
    74057276    break;
    74067277
     
    74087279
    74097280/* Line 1806 of yacc.c  */
    7410 #line 1550 "parser.yy"
    7411     { (yyval.en) = 0; }
     7281#line 1549 "parser.yy"
     7282    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    74127283    break;
    74137284
     
    74157286
    74167287/* Line 1806 of yacc.c  */
    7417 #line 1552 "parser.yy"
    7418     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7419     break;
    7420 
    7421   case 403:
    7422 
    7423 /* Line 1806 of yacc.c  */
    7424 #line 1559 "parser.yy"
     7288#line 1556 "parser.yy"
    74257289    { (yyval.decl) = 0; }
    74267290    break;
    74277291
     7292  case 406:
     7293
     7294/* Line 1806 of yacc.c  */
     7295#line 1564 "parser.yy"
     7296    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7297    break;
     7298
    74287299  case 407:
    74297300
    74307301/* Line 1806 of yacc.c  */
    7431 #line 1567 "parser.yy"
     7302#line 1566 "parser.yy"
     7303    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7304    break;
     7305
     7306  case 408:
     7307
     7308/* Line 1806 of yacc.c  */
     7309#line 1568 "parser.yy"
     7310    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7311    break;
     7312
     7313  case 410:
     7314
     7315/* Line 1806 of yacc.c  */
     7316#line 1576 "parser.yy"
    74327317    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    74337318    break;
    74347319
    7435   case 408:
    7436 
    7437 /* Line 1806 of yacc.c  */
    7438 #line 1569 "parser.yy"
     7320  case 411:
     7321
     7322/* Line 1806 of yacc.c  */
     7323#line 1578 "parser.yy"
     7324    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7325    break;
     7326
     7327  case 412:
     7328
     7329/* Line 1806 of yacc.c  */
     7330#line 1580 "parser.yy"
     7331    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7332    break;
     7333
     7334  case 414:
     7335
     7336/* Line 1806 of yacc.c  */
     7337#line 1586 "parser.yy"
     7338    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7339    break;
     7340
     7341  case 415:
     7342
     7343/* Line 1806 of yacc.c  */
     7344#line 1591 "parser.yy"
     7345    { (yyval.decl) = 0; }
     7346    break;
     7347
     7348  case 418:
     7349
     7350/* Line 1806 of yacc.c  */
     7351#line 1598 "parser.yy"
    74397352    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    74407353    break;
    74417354
    7442   case 409:
    7443 
    7444 /* Line 1806 of yacc.c  */
    7445 #line 1571 "parser.yy"
    7446     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7447     break;
    7448 
    7449   case 411:
    7450 
    7451 /* Line 1806 of yacc.c  */
    7452 #line 1579 "parser.yy"
     7355  case 421:
     7356
     7357/* Line 1806 of yacc.c  */
     7358#line 1605 "parser.yy"
    74537359    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    74547360    break;
    74557361
    7456   case 412:
    7457 
    7458 /* Line 1806 of yacc.c  */
    7459 #line 1581 "parser.yy"
     7362  case 422:
     7363
     7364/* Line 1806 of yacc.c  */
     7365#line 1607 "parser.yy"
    74607366    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    74617367    break;
    74627368
    7463   case 413:
    7464 
    7465 /* Line 1806 of yacc.c  */
    7466 #line 1583 "parser.yy"
    7467     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7468     break;
    7469 
    7470   case 415:
    7471 
    7472 /* Line 1806 of yacc.c  */
    7473 #line 1589 "parser.yy"
    7474     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7475     break;
    7476 
    7477   case 416:
    7478 
    7479 /* Line 1806 of yacc.c  */
    7480 #line 1594 "parser.yy"
    7481     { (yyval.decl) = 0; }
    7482     break;
    7483 
    7484   case 419:
    7485 
    7486 /* Line 1806 of yacc.c  */
    7487 #line 1601 "parser.yy"
    7488     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7489     break;
    7490 
    7491   case 422:
    7492 
    7493 /* Line 1806 of yacc.c  */
    7494 #line 1608 "parser.yy"
    7495     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7496     break;
    7497 
    7498   case 423:
    7499 
    7500 /* Line 1806 of yacc.c  */
    7501 #line 1610 "parser.yy"
    7502     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     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) ); }
    75037374    break;
    75047375
     
    75137384
    75147385/* Line 1806 of yacc.c  */
    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"
     7386#line 1621 "parser.yy"
    75237387    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    75247388    break;
    75257389
    7526   case 432:
    7527 
    7528 /* Line 1806 of yacc.c  */
    7529 #line 1634 "parser.yy"
     7390  case 431:
     7391
     7392/* Line 1806 of yacc.c  */
     7393#line 1631 "parser.yy"
    75307394    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75317395    break;
    75327396
    7533   case 434:
    7534 
    7535 /* Line 1806 of yacc.c  */
    7536 #line 1640 "parser.yy"
     7397  case 433:
     7398
     7399/* Line 1806 of yacc.c  */
     7400#line 1637 "parser.yy"
    75377401    {
    75387402                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    75417405    break;
    75427406
    7543   case 435:
    7544 
    7545 /* Line 1806 of yacc.c  */
    7546 #line 1645 "parser.yy"
     7407  case 434:
     7408
     7409/* Line 1806 of yacc.c  */
     7410#line 1642 "parser.yy"
    75477411    {
    75487412                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    75517415    break;
    75527416
     7417  case 436:
     7418
     7419/* Line 1806 of yacc.c  */
     7420#line 1651 "parser.yy"
     7421    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7422    break;
     7423
    75537424  case 437:
    75547425
    75557426/* Line 1806 of yacc.c  */
    7556 #line 1654 "parser.yy"
     7427#line 1660 "parser.yy"
     7428    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     7429    break;
     7430
     7431  case 438:
     7432
     7433/* Line 1806 of yacc.c  */
     7434#line 1662 "parser.yy"
     7435    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     7436    break;
     7437
     7438  case 450:
     7439
     7440/* Line 1806 of yacc.c  */
     7441#line 1687 "parser.yy"
    75577442    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    75587443    break;
    75597444
    7560   case 438:
    7561 
    7562 /* Line 1806 of yacc.c  */
    7563 #line 1663 "parser.yy"
    7564     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    7565     break;
    7566 
    7567   case 439:
    7568 
    7569 /* Line 1806 of yacc.c  */
    7570 #line 1665 "parser.yy"
    7571     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    7572     break;
    7573 
    7574   case 451:
    7575 
    7576 /* Line 1806 of yacc.c  */
    7577 #line 1690 "parser.yy"
     7445  case 454:
     7446
     7447/* Line 1806 of yacc.c  */
     7448#line 1695 "parser.yy"
    75787449    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    75797450    break;
     
    75827453
    75837454/* Line 1806 of yacc.c  */
    7584 #line 1698 "parser.yy"
    7585     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7455#line 1700 "parser.yy"
     7456    { (yyval.in) = 0; }
    75867457    break;
    75877458
     
    75897460
    75907461/* Line 1806 of yacc.c  */
    7591 #line 1703 "parser.yy"
     7462#line 1702 "parser.yy"
     7463    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7464    break;
     7465
     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
     7473  case 458:
     7474
     7475/* Line 1806 of yacc.c  */
     7476#line 1708 "parser.yy"
     7477    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7478    break;
     7479
     7480  case 459:
     7481
     7482/* Line 1806 of yacc.c  */
     7483#line 1709 "parser.yy"
     7484    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7485    break;
     7486
     7487  case 460:
     7488
     7489/* Line 1806 of yacc.c  */
     7490#line 1714 "parser.yy"
    75927491    { (yyval.in) = 0; }
    75937492    break;
    75947493
    7595   case 457:
    7596 
    7597 /* Line 1806 of yacc.c  */
    7598 #line 1705 "parser.yy"
    7599     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7600     break;
    7601 
    7602   case 458:
    7603 
    7604 /* Line 1806 of yacc.c  */
    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"
    7613     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7614     break;
    7615 
    7616   case 460:
    7617 
    7618 /* Line 1806 of yacc.c  */
    7619 #line 1712 "parser.yy"
    7620     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    7621     break;
    7622 
    7623   case 461:
     7494  case 462:
     7495
     7496/* Line 1806 of yacc.c  */
     7497#line 1716 "parser.yy"
     7498    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7499    break;
     7500
     7501  case 463:
    76247502
    76257503/* Line 1806 of yacc.c  */
    76267504#line 1717 "parser.yy"
    7627     { (yyval.in) = 0; }
    7628     break;
    7629 
    7630   case 463:
     7505    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
     7506    break;
     7507
     7508  case 464:
    76317509
    76327510/* Line 1806 of yacc.c  */
    76337511#line 1719 "parser.yy"
    7634     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7635     break;
    7636 
    7637   case 464:
    7638 
    7639 /* Line 1806 of yacc.c  */
    7640 #line 1720 "parser.yy"
    7641     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    7642     break;
    7643 
    7644   case 465:
    7645 
    7646 /* Line 1806 of yacc.c  */
    7647 #line 1722 "parser.yy"
    76487512    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    76497513    break;
    76507514
    7651   case 467:
    7652 
    7653 /* Line 1806 of yacc.c  */
    7654 #line 1738 "parser.yy"
     7515  case 466:
     7516
     7517/* Line 1806 of yacc.c  */
     7518#line 1735 "parser.yy"
    76557519    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    76567520    break;
    76577521
     7522  case 468:
     7523
     7524/* Line 1806 of yacc.c  */
     7525#line 1741 "parser.yy"
     7526    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     7527    break;
     7528
    76587529  case 469:
    76597530
    76607531/* Line 1806 of yacc.c  */
    7661 #line 1744 "parser.yy"
    7662     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     7532#line 1749 "parser.yy"
     7533    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    76637534    break;
    76647535
     
    76667537
    76677538/* Line 1806 of yacc.c  */
    7668 #line 1752 "parser.yy"
    7669     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
     7539#line 1751 "parser.yy"
     7540    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    76707541    break;
    76717542
     
    76747545/* Line 1806 of yacc.c  */
    76757546#line 1754 "parser.yy"
    7676     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
     7547    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    76777548    break;
    76787549
     
    76807551
    76817552/* Line 1806 of yacc.c  */
    7682 #line 1757 "parser.yy"
     7553#line 1756 "parser.yy"
    76837554    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    76847555    break;
     
    76877558
    76887559/* Line 1806 of yacc.c  */
    7689 #line 1759 "parser.yy"
    7690     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7560#line 1758 "parser.yy"
     7561    { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
    76917562    break;
    76927563
     
    76947565
    76957566/* Line 1806 of yacc.c  */
    7696 #line 1761 "parser.yy"
    7697     { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
    7698     break;
    7699 
    7700   case 475:
    7701 
    7702 /* Line 1806 of yacc.c  */
    7703 #line 1763 "parser.yy"
     7567#line 1760 "parser.yy"
    77047568    { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
    77057569    break;
    77067570
     7571  case 476:
     7572
     7573/* Line 1806 of yacc.c  */
     7574#line 1784 "parser.yy"
     7575    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7576    break;
     7577
    77077578  case 477:
    77087579
    77097580/* Line 1806 of yacc.c  */
    7710 #line 1787 "parser.yy"
     7581#line 1786 "parser.yy"
     7582    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7583    break;
     7584
     7585  case 478:
     7586
     7587/* Line 1806 of yacc.c  */
     7588#line 1788 "parser.yy"
     7589    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7590    break;
     7591
     7592  case 480:
     7593
     7594/* Line 1806 of yacc.c  */
     7595#line 1794 "parser.yy"
    77117596    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    77127597    break;
    77137598
    7714   case 478:
    7715 
    7716 /* Line 1806 of yacc.c  */
    7717 #line 1789 "parser.yy"
     7599  case 481:
     7600
     7601/* Line 1806 of yacc.c  */
     7602#line 1796 "parser.yy"
    77187603    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    77197604    break;
    77207605
    7721   case 479:
    7722 
    7723 /* Line 1806 of yacc.c  */
    7724 #line 1791 "parser.yy"
    7725     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7726     break;
    7727 
    7728   case 481:
    7729 
    7730 /* Line 1806 of yacc.c  */
    7731 #line 1797 "parser.yy"
    7732     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7733     break;
    7734 
    77357606  case 482:
    77367607
    77377608/* Line 1806 of yacc.c  */
    7738 #line 1799 "parser.yy"
    7739     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7740     break;
    7741 
    7742   case 483:
    7743 
    7744 /* Line 1806 of yacc.c  */
    7745 #line 1804 "parser.yy"
     7609#line 1801 "parser.yy"
    77467610    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    77477611    break;
    77487612
     7613  case 484:
     7614
     7615/* Line 1806 of yacc.c  */
     7616#line 1807 "parser.yy"
     7617    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     7618    break;
     7619
    77497620  case 485:
    77507621
    77517622/* Line 1806 of yacc.c  */
    7752 #line 1810 "parser.yy"
    7753     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     7623#line 1812 "parser.yy"
     7624    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    77547625    break;
    77557626
     
    77577628
    77587629/* Line 1806 of yacc.c  */
    7759 #line 1815 "parser.yy"
    7760     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    7761     break;
    7762 
    7763   case 487:
    7764 
    7765 /* Line 1806 of yacc.c  */
    7766 #line 1817 "parser.yy"
     7630#line 1814 "parser.yy"
    77677631    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    77687632    break;
    77697633
     7634  case 488:
     7635
     7636/* Line 1806 of yacc.c  */
     7637#line 1820 "parser.yy"
     7638    { (yyval.tclass) = DeclarationNode::Type; }
     7639    break;
     7640
    77707641  case 489:
    77717642
    77727643/* Line 1806 of yacc.c  */
    7773 #line 1823 "parser.yy"
    7774     { (yyval.tclass) = DeclarationNode::Type; }
     7644#line 1822 "parser.yy"
     7645    { (yyval.tclass) = DeclarationNode::Ftype; }
    77757646    break;
    77767647
     
    77787649
    77797650/* Line 1806 of yacc.c  */
    7780 #line 1825 "parser.yy"
    7781     { (yyval.tclass) = DeclarationNode::Ftype; }
     7651#line 1824 "parser.yy"
     7652    { (yyval.tclass) = DeclarationNode::Dtype; }
    77827653    break;
    77837654
     
    77857656
    77867657/* Line 1806 of yacc.c  */
    7787 #line 1827 "parser.yy"
    7788     { (yyval.tclass) = DeclarationNode::Dtype; }
     7658#line 1829 "parser.yy"
     7659    { (yyval.decl) = 0; }
    77897660    break;
    77907661
     
    77927663
    77937664/* Line 1806 of yacc.c  */
    7794 #line 1832 "parser.yy"
    7795     { (yyval.decl) = 0; }
     7665#line 1831 "parser.yy"
     7666    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    77967667    break;
    77977668
     
    77997670
    78007671/* Line 1806 of yacc.c  */
    7801 #line 1834 "parser.yy"
    7802     { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    7803     break;
    7804 
    7805   case 494:
    7806 
    7807 /* Line 1806 of yacc.c  */
    7808 #line 1839 "parser.yy"
     7672#line 1836 "parser.yy"
    78097673    {
    78107674                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    78137677    break;
    78147678
     7679  case 494:
     7680
     7681/* Line 1806 of yacc.c  */
     7682#line 1841 "parser.yy"
     7683    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7684    break;
     7685
    78157686  case 495:
    78167687
    78177688/* Line 1806 of yacc.c  */
    7818 #line 1844 "parser.yy"
    7819     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7689#line 1843 "parser.yy"
     7690    { (yyval.decl) = 0; }
    78207691    break;
    78217692
     
    78237694
    78247695/* Line 1806 of yacc.c  */
    7825 #line 1846 "parser.yy"
    7826     { (yyval.decl) = 0; }
    7827     break;
    7828 
    7829   case 497:
     7696#line 1848 "parser.yy"
     7697    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     7698    break;
     7699
     7700  case 498:
    78307701
    78317702/* Line 1806 of yacc.c  */
    78327703#line 1851 "parser.yy"
    7833     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     7704    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    78347705    break;
    78357706
     
    78377708
    78387709/* Line 1806 of yacc.c  */
    7839 #line 1854 "parser.yy"
    7840     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
     7710#line 1853 "parser.yy"
     7711    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    78417712    break;
    78427713
     
    78447715
    78457716/* Line 1806 of yacc.c  */
    7846 #line 1856 "parser.yy"
    7847     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     7717#line 1858 "parser.yy"
     7718    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    78487719    break;
    78497720
     
    78517722
    78527723/* Line 1806 of yacc.c  */
    7853 #line 1861 "parser.yy"
    7854     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7724#line 1860 "parser.yy"
     7725    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    78557726    break;
    78567727
     
    78587729
    78597730/* Line 1806 of yacc.c  */
    7860 #line 1863 "parser.yy"
    7861     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     7731#line 1862 "parser.yy"
     7732    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    78627733    break;
    78637734
     
    78657736
    78667737/* Line 1806 of yacc.c  */
    7867 #line 1865 "parser.yy"
    7868     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     7738#line 1867 "parser.yy"
     7739    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    78697740    break;
    78707741
     
    78727743
    78737744/* Line 1806 of yacc.c  */
    7874 #line 1870 "parser.yy"
    7875     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     7745#line 1869 "parser.yy"
     7746    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    78767747    break;
    78777748
     
    78797750
    78807751/* Line 1806 of yacc.c  */
    7881 #line 1872 "parser.yy"
    7882     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7883     break;
    7884 
    7885   case 506:
    7886 
    7887 /* Line 1806 of yacc.c  */
    7888 #line 1877 "parser.yy"
     7752#line 1874 "parser.yy"
    78897753    {
    78907754                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    78937757    break;
    78947758
    7895   case 507:
    7896 
    7897 /* Line 1806 of yacc.c  */
    7898 #line 1882 "parser.yy"
     7759  case 506:
     7760
     7761/* Line 1806 of yacc.c  */
     7762#line 1879 "parser.yy"
    78997763    {
    79007764                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    79037767    break;
    79047768
    7905   case 508:
    7906 
    7907 /* Line 1806 of yacc.c  */
    7908 #line 1890 "parser.yy"
     7769  case 507:
     7770
     7771/* Line 1806 of yacc.c  */
     7772#line 1887 "parser.yy"
    79097773    {
    79107774                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    79137777    break;
    79147778
    7915   case 509:
    7916 
    7917 /* Line 1806 of yacc.c  */
    7918 #line 1895 "parser.yy"
     7779  case 508:
     7780
     7781/* Line 1806 of yacc.c  */
     7782#line 1892 "parser.yy"
    79197783    {
    79207784                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    79237787    break;
    79247788
    7925   case 510:
    7926 
    7927 /* Line 1806 of yacc.c  */
    7928 #line 1900 "parser.yy"
     7789  case 509:
     7790
     7791/* Line 1806 of yacc.c  */
     7792#line 1897 "parser.yy"
    79297793    {
    79307794                        typedefTable.leaveTrait();
     
    79347798    break;
    79357799
    7936   case 512:
    7937 
    7938 /* Line 1806 of yacc.c  */
    7939 #line 1910 "parser.yy"
     7800  case 511:
     7801
     7802/* Line 1806 of yacc.c  */
     7803#line 1907 "parser.yy"
    79407804    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    79417805    break;
    79427806
    7943   case 515:
    7944 
    7945 /* Line 1806 of yacc.c  */
    7946 #line 1920 "parser.yy"
     7807  case 514:
     7808
     7809/* Line 1806 of yacc.c  */
     7810#line 1917 "parser.yy"
    79477811    {
    79487812                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    79517815    break;
    79527816
    7953   case 516:
    7954 
    7955 /* Line 1806 of yacc.c  */
    7956 #line 1925 "parser.yy"
     7817  case 515:
     7818
     7819/* Line 1806 of yacc.c  */
     7820#line 1922 "parser.yy"
    79577821    {
    79587822                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    79617825    break;
    79627826
    7963   case 517:
    7964 
    7965 /* Line 1806 of yacc.c  */
    7966 #line 1930 "parser.yy"
     7827  case 516:
     7828
     7829/* Line 1806 of yacc.c  */
     7830#line 1927 "parser.yy"
    79677831    {
    79687832                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    79717835    break;
    79727836
    7973   case 518:
    7974 
    7975 /* Line 1806 of yacc.c  */
    7976 #line 1938 "parser.yy"
     7837  case 517:
     7838
     7839/* Line 1806 of yacc.c  */
     7840#line 1935 "parser.yy"
    79777841    {
    79787842                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    79817845    break;
    79827846
    7983   case 519:
    7984 
    7985 /* Line 1806 of yacc.c  */
    7986 #line 1943 "parser.yy"
     7847  case 518:
     7848
     7849/* Line 1806 of yacc.c  */
     7850#line 1940 "parser.yy"
    79877851    {
    79887852                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    79917855    break;
    79927856
     7857  case 519:
     7858
     7859/* Line 1806 of yacc.c  */
     7860#line 1950 "parser.yy"
     7861    {}
     7862    break;
     7863
    79937864  case 520:
    79947865
    79957866/* Line 1806 of yacc.c  */
    7996 #line 1953 "parser.yy"
    7997     {}
    7998     break;
    7999 
    8000   case 521:
    8001 
    8002 /* Line 1806 of yacc.c  */
    8003 #line 1955 "parser.yy"
     7867#line 1952 "parser.yy"
    80047868    {
    80057869                        if ( theTree ) {
     
    80117875    break;
    80127876
     7877  case 522:
     7878
     7879/* Line 1806 of yacc.c  */
     7880#line 1964 "parser.yy"
     7881    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7882    break;
     7883
    80137884  case 523:
    80147885
    80157886/* Line 1806 of yacc.c  */
    8016 #line 1967 "parser.yy"
    8017     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    8018     break;
    8019 
    8020   case 524:
    8021 
    8022 /* Line 1806 of yacc.c  */
    8023 #line 1972 "parser.yy"
     7887#line 1969 "parser.yy"
    80247888    { (yyval.decl) = 0; }
    80257889    break;
    80267890
     7891  case 527:
     7892
     7893/* Line 1806 of yacc.c  */
     7894#line 1977 "parser.yy"
     7895    {}
     7896    break;
     7897
    80277898  case 528:
    80287899
    80297900/* Line 1806 of yacc.c  */
    8030 #line 1980 "parser.yy"
    8031     {}
    8032     break;
    8033 
    8034   case 529:
    8035 
    8036 /* Line 1806 of yacc.c  */
    8037 #line 1982 "parser.yy"
     7901#line 1979 "parser.yy"
    80387902    {
    80397903                        linkageStack.push( linkage );
     
    80427906    break;
    80437907
    8044   case 530:
    8045 
    8046 /* Line 1806 of yacc.c  */
    8047 #line 1987 "parser.yy"
     7908  case 529:
     7909
     7910/* Line 1806 of yacc.c  */
     7911#line 1984 "parser.yy"
    80487912    {
    80497913                        linkage = linkageStack.top();
     
    80537917    break;
    80547918
    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"
     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"
    80667930    {
    80677931                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80717935    break;
    80727936
    8073   case 534:
    8074 
    8075 /* Line 1806 of yacc.c  */
    8076 #line 2010 "parser.yy"
     7937  case 533:
     7938
     7939/* Line 1806 of yacc.c  */
     7940#line 2006 "parser.yy"
    80777941    {
    80787942                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80827946    break;
    80837947
    8084   case 535:
    8085 
    8086 /* Line 1806 of yacc.c  */
    8087 #line 2019 "parser.yy"
     7948  case 534:
     7949
     7950/* Line 1806 of yacc.c  */
     7951#line 2015 "parser.yy"
    80887952    {
    80897953                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80937957    break;
    80947958
    8095   case 536:
    8096 
    8097 /* Line 1806 of yacc.c  */
    8098 #line 2025 "parser.yy"
     7959  case 535:
     7960
     7961/* Line 1806 of yacc.c  */
     7962#line 2021 "parser.yy"
    80997963    {
    81007964                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81047968    break;
    81057969
    8106   case 537:
    8107 
    8108 /* Line 1806 of yacc.c  */
    8109 #line 2031 "parser.yy"
     7970  case 536:
     7971
     7972/* Line 1806 of yacc.c  */
     7973#line 2027 "parser.yy"
    81107974    {
    81117975                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81157979    break;
    81167980
    8117   case 538:
    8118 
    8119 /* Line 1806 of yacc.c  */
    8120 #line 2037 "parser.yy"
     7981  case 537:
     7982
     7983/* Line 1806 of yacc.c  */
     7984#line 2033 "parser.yy"
    81217985    {
    81227986                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81267990    break;
    81277991
    8128   case 539:
    8129 
    8130 /* Line 1806 of yacc.c  */
    8131 #line 2043 "parser.yy"
     7992  case 538:
     7993
     7994/* Line 1806 of yacc.c  */
     7995#line 2039 "parser.yy"
    81327996    {
    81337997                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81378001    break;
    81388002
    8139   case 540:
    8140 
    8141 /* Line 1806 of yacc.c  */
    8142 #line 2051 "parser.yy"
     8003  case 539:
     8004
     8005/* Line 1806 of yacc.c  */
     8006#line 2047 "parser.yy"
    81438007    {
    81448008                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81488012    break;
    81498013
    8150   case 541:
    8151 
    8152 /* Line 1806 of yacc.c  */
    8153 #line 2057 "parser.yy"
     8014  case 540:
     8015
     8016/* Line 1806 of yacc.c  */
     8017#line 2053 "parser.yy"
    81548018    {
    81558019                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81598023    break;
    81608024
    8161   case 542:
    8162 
    8163 /* Line 1806 of yacc.c  */
    8164 #line 2065 "parser.yy"
     8025  case 541:
     8026
     8027/* Line 1806 of yacc.c  */
     8028#line 2061 "parser.yy"
    81658029    {
    81668030                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81708034    break;
    81718035
    8172   case 543:
    8173 
    8174 /* Line 1806 of yacc.c  */
    8175 #line 2071 "parser.yy"
     8036  case 542:
     8037
     8038/* Line 1806 of yacc.c  */
     8039#line 2067 "parser.yy"
    81768040    {
    81778041                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81818045    break;
    81828046
    8183   case 547:
    8184 
    8185 /* Line 1806 of yacc.c  */
    8186 #line 2086 "parser.yy"
     8047  case 546:
     8048
     8049/* Line 1806 of yacc.c  */
     8050#line 2082 "parser.yy"
    81878051    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    81888052    break;
    81898053
    8190   case 550:
    8191 
    8192 /* Line 1806 of yacc.c  */
    8193 #line 2096 "parser.yy"
     8054  case 549:
     8055
     8056/* Line 1806 of yacc.c  */
     8057#line 2092 "parser.yy"
    81948058    { (yyval.decl) = 0; }
    81958059    break;
    81968060
     8061  case 552:
     8062
     8063/* Line 1806 of yacc.c  */
     8064#line 2099 "parser.yy"
     8065    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8066    break;
     8067
    81978068  case 553:
    81988069
    81998070/* Line 1806 of yacc.c  */
    8200 #line 2103 "parser.yy"
    8201     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    8202     break;
    8203 
    8204   case 554:
    8205 
    8206 /* Line 1806 of yacc.c  */
    8207 #line 2109 "parser.yy"
     8071#line 2105 "parser.yy"
    82088072    { (yyval.decl) = 0; }
    82098073    break;
    82108074
     8075  case 559:
     8076
     8077/* Line 1806 of yacc.c  */
     8078#line 2120 "parser.yy"
     8079    {}
     8080    break;
     8081
    82118082  case 560:
    82128083
    82138084/* Line 1806 of yacc.c  */
    8214 #line 2124 "parser.yy"
     8085#line 2121 "parser.yy"
    82158086    {}
    82168087    break;
     
    82198090
    82208091/* Line 1806 of yacc.c  */
    8221 #line 2125 "parser.yy"
     8092#line 2122 "parser.yy"
    82228093    {}
    82238094    break;
     
    82268097
    82278098/* Line 1806 of yacc.c  */
    8228 #line 2126 "parser.yy"
     8099#line 2123 "parser.yy"
    82298100    {}
    82308101    break;
     
    82338104
    82348105/* Line 1806 of yacc.c  */
    8235 #line 2127 "parser.yy"
    8236     {}
    8237     break;
    8238 
    8239   case 564:
    8240 
    8241 /* Line 1806 of yacc.c  */
    8242 #line 2162 "parser.yy"
     8106#line 2158 "parser.yy"
    82438107    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82448108    break;
    82458109
     8110  case 565:
     8111
     8112/* Line 1806 of yacc.c  */
     8113#line 2161 "parser.yy"
     8114    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8115    break;
     8116
    82468117  case 566:
    82478118
    82488119/* Line 1806 of yacc.c  */
    8249 #line 2165 "parser.yy"
     8120#line 2163 "parser.yy"
    82508121    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82518122    break;
     
    82548125
    82558126/* Line 1806 of yacc.c  */
    8256 #line 2167 "parser.yy"
    8257     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8258     break;
    8259 
    8260   case 568:
    8261 
    8262 /* Line 1806 of yacc.c  */
    8263 #line 2172 "parser.yy"
     8127#line 2168 "parser.yy"
    82648128    {
    82658129                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    82688132    break;
    82698133
     8134  case 568:
     8135
     8136/* Line 1806 of yacc.c  */
     8137#line 2173 "parser.yy"
     8138    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8139    break;
     8140
    82708141  case 569:
    82718142
    82728143/* Line 1806 of yacc.c  */
    8273 #line 2177 "parser.yy"
     8144#line 2178 "parser.yy"
     8145    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8146    break;
     8147
     8148  case 570:
     8149
     8150/* Line 1806 of yacc.c  */
     8151#line 2180 "parser.yy"
     8152    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8153    break;
     8154
     8155  case 571:
     8156
     8157/* Line 1806 of yacc.c  */
     8158#line 2182 "parser.yy"
    82748159    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82758160    break;
    82768161
    8277   case 570:
    8278 
    8279 /* Line 1806 of yacc.c  */
    8280 #line 2182 "parser.yy"
    8281     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8282     break;
    8283 
    8284   case 571:
    8285 
    8286 /* Line 1806 of yacc.c  */
    8287 #line 2184 "parser.yy"
    8288     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8289     break;
    8290 
    82918162  case 572:
    82928163
    82938164/* Line 1806 of yacc.c  */
    8294 #line 2186 "parser.yy"
     8165#line 2187 "parser.yy"
     8166    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8167    break;
     8168
     8169  case 573:
     8170
     8171/* Line 1806 of yacc.c  */
     8172#line 2189 "parser.yy"
     8173    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8174    break;
     8175
     8176  case 574:
     8177
     8178/* Line 1806 of yacc.c  */
     8179#line 2191 "parser.yy"
     8180    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8181    break;
     8182
     8183  case 575:
     8184
     8185/* Line 1806 of yacc.c  */
     8186#line 2193 "parser.yy"
    82958187    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82968188    break;
    82978189
    8298   case 573:
    8299 
    8300 /* Line 1806 of yacc.c  */
    8301 #line 2191 "parser.yy"
    8302     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8303     break;
    8304 
    8305   case 574:
    8306 
    8307 /* Line 1806 of yacc.c  */
    8308 #line 2193 "parser.yy"
    8309     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8310     break;
    8311 
    8312   case 575:
    8313 
    8314 /* Line 1806 of yacc.c  */
    8315 #line 2195 "parser.yy"
    8316     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8317     break;
    8318 
    83198190  case 576:
    83208191
    83218192/* Line 1806 of yacc.c  */
    8322 #line 2197 "parser.yy"
     8193#line 2198 "parser.yy"
     8194    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8195    break;
     8196
     8197  case 577:
     8198
     8199/* Line 1806 of yacc.c  */
     8200#line 2200 "parser.yy"
    83238201    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83248202    break;
    83258203
    8326   case 577:
    8327 
    8328 /* Line 1806 of yacc.c  */
    8329 #line 2202 "parser.yy"
    8330     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8331     break;
    8332 
    83338204  case 578:
    83348205
    83358206/* Line 1806 of yacc.c  */
    8336 #line 2204 "parser.yy"
    8337     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8338     break;
    8339 
    8340   case 579:
     8207#line 2210 "parser.yy"
     8208    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8209    break;
     8210
     8211  case 580:
    83418212
    83428213/* Line 1806 of yacc.c  */
     
    83488219
    83498220/* Line 1806 of yacc.c  */
    8350 #line 2216 "parser.yy"
     8221#line 2218 "parser.yy"
     8222    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8223    break;
     8224
     8225  case 582:
     8226
     8227/* Line 1806 of yacc.c  */
     8228#line 2220 "parser.yy"
     8229    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8230    break;
     8231
     8232  case 583:
     8233
     8234/* Line 1806 of yacc.c  */
     8235#line 2222 "parser.yy"
     8236    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8237    break;
     8238
     8239  case 584:
     8240
     8241/* Line 1806 of yacc.c  */
     8242#line 2227 "parser.yy"
     8243    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8244    break;
     8245
     8246  case 585:
     8247
     8248/* Line 1806 of yacc.c  */
     8249#line 2229 "parser.yy"
     8250    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8251    break;
     8252
     8253  case 586:
     8254
     8255/* Line 1806 of yacc.c  */
     8256#line 2231 "parser.yy"
     8257    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8258    break;
     8259
     8260  case 587:
     8261
     8262/* Line 1806 of yacc.c  */
     8263#line 2236 "parser.yy"
     8264    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8265    break;
     8266
     8267  case 588:
     8268
     8269/* Line 1806 of yacc.c  */
     8270#line 2238 "parser.yy"
     8271    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8272    break;
     8273
     8274  case 589:
     8275
     8276/* Line 1806 of yacc.c  */
     8277#line 2240 "parser.yy"
     8278    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8279    break;
     8280
     8281  case 593:
     8282
     8283/* Line 1806 of yacc.c  */
     8284#line 2255 "parser.yy"
     8285    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8286    break;
     8287
     8288  case 594:
     8289
     8290/* Line 1806 of yacc.c  */
     8291#line 2257 "parser.yy"
     8292    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8293    break;
     8294
     8295  case 595:
     8296
     8297/* Line 1806 of yacc.c  */
     8298#line 2259 "parser.yy"
     8299    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8300    break;
     8301
     8302  case 596:
     8303
     8304/* Line 1806 of yacc.c  */
     8305#line 2264 "parser.yy"
     8306    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8307    break;
     8308
     8309  case 597:
     8310
     8311/* Line 1806 of yacc.c  */
     8312#line 2266 "parser.yy"
     8313    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8314    break;
     8315
     8316  case 598:
     8317
     8318/* Line 1806 of yacc.c  */
     8319#line 2268 "parser.yy"
     8320    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8321    break;
     8322
     8323  case 599:
     8324
     8325/* Line 1806 of yacc.c  */
     8326#line 2273 "parser.yy"
     8327    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8328    break;
     8329
     8330  case 600:
     8331
     8332/* Line 1806 of yacc.c  */
     8333#line 2275 "parser.yy"
     8334    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8335    break;
     8336
     8337  case 601:
     8338
     8339/* Line 1806 of yacc.c  */
     8340#line 2277 "parser.yy"
     8341    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8342    break;
     8343
     8344  case 602:
     8345
     8346/* Line 1806 of yacc.c  */
     8347#line 2292 "parser.yy"
    83518348    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83528349    break;
    83538350
    8354   case 582:
    8355 
    8356 /* Line 1806 of yacc.c  */
    8357 #line 2221 "parser.yy"
    8358     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8359     break;
    8360 
    8361   case 583:
    8362 
    8363 /* Line 1806 of yacc.c  */
    8364 #line 2223 "parser.yy"
    8365     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8366     break;
    8367 
    8368   case 584:
    8369 
    8370 /* Line 1806 of yacc.c  */
    8371 #line 2225 "parser.yy"
    8372     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8373     break;
    8374 
    8375   case 585:
    8376 
    8377 /* Line 1806 of yacc.c  */
    8378 #line 2230 "parser.yy"
    8379     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8380     break;
    8381 
    8382   case 586:
    8383 
    8384 /* Line 1806 of yacc.c  */
    8385 #line 2232 "parser.yy"
    8386     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8387     break;
    8388 
    8389   case 587:
    8390 
    8391 /* Line 1806 of yacc.c  */
    8392 #line 2234 "parser.yy"
    8393     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8394     break;
    8395 
    8396   case 588:
    8397 
    8398 /* Line 1806 of yacc.c  */
    8399 #line 2239 "parser.yy"
    8400     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8401     break;
    8402 
    8403   case 589:
    8404 
    8405 /* Line 1806 of yacc.c  */
    8406 #line 2241 "parser.yy"
    8407     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8408     break;
    8409 
    8410   case 590:
    8411 
    8412 /* Line 1806 of yacc.c  */
    8413 #line 2243 "parser.yy"
    8414     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8415     break;
    8416 
    8417   case 594:
    8418 
    8419 /* Line 1806 of yacc.c  */
    8420 #line 2258 "parser.yy"
    8421     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8422     break;
    8423 
    8424   case 595:
    8425 
    8426 /* Line 1806 of yacc.c  */
    8427 #line 2260 "parser.yy"
    8428     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8429     break;
    8430 
    8431   case 596:
    8432 
    8433 /* Line 1806 of yacc.c  */
    8434 #line 2262 "parser.yy"
    8435     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8436     break;
    8437 
    8438   case 597:
    8439 
    8440 /* Line 1806 of yacc.c  */
    8441 #line 2267 "parser.yy"
    8442     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8443     break;
    8444 
    8445   case 598:
    8446 
    8447 /* Line 1806 of yacc.c  */
    8448 #line 2269 "parser.yy"
    8449     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8450     break;
    8451 
    8452   case 599:
    8453 
    8454 /* Line 1806 of yacc.c  */
    8455 #line 2271 "parser.yy"
    8456     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8457     break;
    8458 
    8459   case 600:
    8460 
    8461 /* Line 1806 of yacc.c  */
    8462 #line 2276 "parser.yy"
    8463     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8464     break;
    8465 
    8466   case 601:
    8467 
    8468 /* Line 1806 of yacc.c  */
    8469 #line 2278 "parser.yy"
    8470     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8471     break;
    8472 
    8473   case 602:
    8474 
    8475 /* Line 1806 of yacc.c  */
    8476 #line 2280 "parser.yy"
    8477     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8478     break;
    8479 
    8480   case 603:
     8351  case 604:
    84818352
    84828353/* Line 1806 of yacc.c  */
     
    84888359
    84898360/* Line 1806 of yacc.c  */
    8490 #line 2298 "parser.yy"
     8361#line 2297 "parser.yy"
    84918362    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84928363    break;
    84938364
    8494   case 606:
    8495 
    8496 /* Line 1806 of yacc.c  */
    8497 #line 2300 "parser.yy"
     8365  case 607:
     8366
     8367/* Line 1806 of yacc.c  */
     8368#line 2303 "parser.yy"
     8369    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8370    break;
     8371
     8372  case 608:
     8373
     8374/* Line 1806 of yacc.c  */
     8375#line 2308 "parser.yy"
     8376    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8377    break;
     8378
     8379  case 609:
     8380
     8381/* Line 1806 of yacc.c  */
     8382#line 2310 "parser.yy"
     8383    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8384    break;
     8385
     8386  case 610:
     8387
     8388/* Line 1806 of yacc.c  */
     8389#line 2312 "parser.yy"
     8390    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8391    break;
     8392
     8393  case 611:
     8394
     8395/* Line 1806 of yacc.c  */
     8396#line 2317 "parser.yy"
     8397    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8398    break;
     8399
     8400  case 612:
     8401
     8402/* Line 1806 of yacc.c  */
     8403#line 2319 "parser.yy"
     8404    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8405    break;
     8406
     8407  case 613:
     8408
     8409/* Line 1806 of yacc.c  */
     8410#line 2321 "parser.yy"
     8411    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8412    break;
     8413
     8414  case 614:
     8415
     8416/* Line 1806 of yacc.c  */
     8417#line 2323 "parser.yy"
     8418    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8419    break;
     8420
     8421  case 615:
     8422
     8423/* Line 1806 of yacc.c  */
     8424#line 2328 "parser.yy"
     8425    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8426    break;
     8427
     8428  case 616:
     8429
     8430/* Line 1806 of yacc.c  */
     8431#line 2330 "parser.yy"
     8432    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8433    break;
     8434
     8435  case 617:
     8436
     8437/* Line 1806 of yacc.c  */
     8438#line 2332 "parser.yy"
     8439    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8440    break;
     8441
     8442  case 618:
     8443
     8444/* Line 1806 of yacc.c  */
     8445#line 2342 "parser.yy"
    84988446    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84998447    break;
    85008448
    8501   case 608:
    8502 
    8503 /* Line 1806 of yacc.c  */
    8504 #line 2306 "parser.yy"
    8505     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8506     break;
    8507 
    8508   case 609:
    8509 
    8510 /* Line 1806 of yacc.c  */
    8511 #line 2311 "parser.yy"
    8512     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8513     break;
    8514 
    8515   case 610:
    8516 
    8517 /* Line 1806 of yacc.c  */
    8518 #line 2313 "parser.yy"
    8519     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8520     break;
    8521 
    8522   case 611:
    8523 
    8524 /* Line 1806 of yacc.c  */
    8525 #line 2315 "parser.yy"
    8526     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8527     break;
    8528 
    8529   case 612:
    8530 
    8531 /* Line 1806 of yacc.c  */
    8532 #line 2320 "parser.yy"
    8533     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8534     break;
    8535 
    8536   case 613:
    8537 
    8538 /* Line 1806 of yacc.c  */
    8539 #line 2322 "parser.yy"
    8540     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8541     break;
    8542 
    8543   case 614:
    8544 
    8545 /* Line 1806 of yacc.c  */
    8546 #line 2324 "parser.yy"
    8547     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8548     break;
    8549 
    8550   case 615:
    8551 
    8552 /* Line 1806 of yacc.c  */
    8553 #line 2326 "parser.yy"
    8554     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8555     break;
    8556 
    8557   case 616:
    8558 
    8559 /* Line 1806 of yacc.c  */
    8560 #line 2331 "parser.yy"
    8561     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8562     break;
    8563 
    8564   case 617:
    8565 
    8566 /* Line 1806 of yacc.c  */
    8567 #line 2333 "parser.yy"
    8568     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8569     break;
    8570 
    8571   case 618:
    8572 
    8573 /* Line 1806 of yacc.c  */
    8574 #line 2335 "parser.yy"
    8575     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8576     break;
    8577 
    8578   case 619:
     8449  case 620:
    85798450
    85808451/* Line 1806 of yacc.c  */
     
    85868457
    85878458/* Line 1806 of yacc.c  */
    8588 #line 2348 "parser.yy"
     8459#line 2347 "parser.yy"
    85898460    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85908461    break;
     
    85938464
    85948465/* Line 1806 of yacc.c  */
    8595 #line 2350 "parser.yy"
     8466#line 2352 "parser.yy"
     8467    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8468    break;
     8469
     8470  case 623:
     8471
     8472/* Line 1806 of yacc.c  */
     8473#line 2354 "parser.yy"
     8474    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8475    break;
     8476
     8477  case 624:
     8478
     8479/* Line 1806 of yacc.c  */
     8480#line 2356 "parser.yy"
     8481    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8482    break;
     8483
     8484  case 625:
     8485
     8486/* Line 1806 of yacc.c  */
     8487#line 2361 "parser.yy"
     8488    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8489    break;
     8490
     8491  case 626:
     8492
     8493/* Line 1806 of yacc.c  */
     8494#line 2363 "parser.yy"
     8495    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8496    break;
     8497
     8498  case 627:
     8499
     8500/* Line 1806 of yacc.c  */
     8501#line 2365 "parser.yy"
     8502    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8503    break;
     8504
     8505  case 628:
     8506
     8507/* Line 1806 of yacc.c  */
     8508#line 2367 "parser.yy"
     8509    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8510    break;
     8511
     8512  case 629:
     8513
     8514/* Line 1806 of yacc.c  */
     8515#line 2372 "parser.yy"
     8516    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8517    break;
     8518
     8519  case 630:
     8520
     8521/* Line 1806 of yacc.c  */
     8522#line 2374 "parser.yy"
     8523    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8524    break;
     8525
     8526  case 631:
     8527
     8528/* Line 1806 of yacc.c  */
     8529#line 2376 "parser.yy"
     8530    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8531    break;
     8532
     8533  case 632:
     8534
     8535/* Line 1806 of yacc.c  */
     8536#line 2407 "parser.yy"
    85968537    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85978538    break;
    85988539
    8599   case 623:
    8600 
    8601 /* Line 1806 of yacc.c  */
    8602 #line 2355 "parser.yy"
    8603     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8604     break;
    8605 
    8606   case 624:
    8607 
    8608 /* Line 1806 of yacc.c  */
    8609 #line 2357 "parser.yy"
    8610     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8611     break;
    8612 
    8613   case 625:
    8614 
    8615 /* Line 1806 of yacc.c  */
    8616 #line 2359 "parser.yy"
    8617     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8618     break;
    8619 
    8620   case 626:
    8621 
    8622 /* Line 1806 of yacc.c  */
    8623 #line 2364 "parser.yy"
    8624     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8625     break;
    8626 
    8627   case 627:
    8628 
    8629 /* Line 1806 of yacc.c  */
    8630 #line 2366 "parser.yy"
    8631     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8632     break;
    8633 
    8634   case 628:
    8635 
    8636 /* Line 1806 of yacc.c  */
    8637 #line 2368 "parser.yy"
    8638     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8639     break;
    8640 
    8641   case 629:
    8642 
    8643 /* Line 1806 of yacc.c  */
    8644 #line 2370 "parser.yy"
    8645     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8646     break;
    8647 
    8648   case 630:
    8649 
    8650 /* Line 1806 of yacc.c  */
    8651 #line 2375 "parser.yy"
    8652     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8653     break;
    8654 
    8655   case 631:
    8656 
    8657 /* Line 1806 of yacc.c  */
    8658 #line 2377 "parser.yy"
    8659     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8660     break;
    8661 
    8662   case 632:
    8663 
    8664 /* Line 1806 of yacc.c  */
    8665 #line 2379 "parser.yy"
    8666     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8667     break;
    8668 
    8669   case 633:
     8540  case 634:
    86708541
    86718542/* Line 1806 of yacc.c  */
     
    86778548
    86788549/* Line 1806 of yacc.c  */
    8679 #line 2413 "parser.yy"
     8550#line 2412 "parser.yy"
    86808551    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86818552    break;
     
    86848555
    86858556/* Line 1806 of yacc.c  */
    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"
     8557#line 2417 "parser.yy"
    86948558    {
    86958559                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    86988562    break;
    86998563
    8700   case 638:
    8701 
    8702 /* Line 1806 of yacc.c  */
    8703 #line 2425 "parser.yy"
     8564  case 637:
     8565
     8566/* Line 1806 of yacc.c  */
     8567#line 2422 "parser.yy"
    87048568    {
    87058569                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    87088572    break;
    87098573
     8574  case 638:
     8575
     8576/* Line 1806 of yacc.c  */
     8577#line 2430 "parser.yy"
     8578    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8579    break;
     8580
    87108581  case 639:
    87118582
    87128583/* Line 1806 of yacc.c  */
    8713 #line 2433 "parser.yy"
     8584#line 2432 "parser.yy"
     8585    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8586    break;
     8587
     8588  case 640:
     8589
     8590/* Line 1806 of yacc.c  */
     8591#line 2434 "parser.yy"
     8592    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8593    break;
     8594
     8595  case 641:
     8596
     8597/* Line 1806 of yacc.c  */
     8598#line 2439 "parser.yy"
     8599    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8600    break;
     8601
     8602  case 642:
     8603
     8604/* Line 1806 of yacc.c  */
     8605#line 2441 "parser.yy"
     8606    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8607    break;
     8608
     8609  case 643:
     8610
     8611/* Line 1806 of yacc.c  */
     8612#line 2446 "parser.yy"
     8613    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8614    break;
     8615
     8616  case 644:
     8617
     8618/* Line 1806 of yacc.c  */
     8619#line 2448 "parser.yy"
     8620    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8621    break;
     8622
     8623  case 646:
     8624
     8625/* Line 1806 of yacc.c  */
     8626#line 2463 "parser.yy"
     8627    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8628    break;
     8629
     8630  case 647:
     8631
     8632/* Line 1806 of yacc.c  */
     8633#line 2465 "parser.yy"
     8634    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8635    break;
     8636
     8637  case 648:
     8638
     8639/* Line 1806 of yacc.c  */
     8640#line 2470 "parser.yy"
     8641    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8642    break;
     8643
     8644  case 649:
     8645
     8646/* Line 1806 of yacc.c  */
     8647#line 2472 "parser.yy"
     8648    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8649    break;
     8650
     8651  case 650:
     8652
     8653/* Line 1806 of yacc.c  */
     8654#line 2474 "parser.yy"
    87148655    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87158656    break;
    87168657
    8717   case 640:
    8718 
    8719 /* Line 1806 of yacc.c  */
    8720 #line 2435 "parser.yy"
     8658  case 651:
     8659
     8660/* Line 1806 of yacc.c  */
     8661#line 2476 "parser.yy"
    87218662    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87228663    break;
    87238664
    8724   case 641:
    8725 
    8726 /* Line 1806 of yacc.c  */
    8727 #line 2437 "parser.yy"
     8665  case 652:
     8666
     8667/* Line 1806 of yacc.c  */
     8668#line 2478 "parser.yy"
    87288669    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87298670    break;
    87308671
    8731   case 642:
    8732 
    8733 /* Line 1806 of yacc.c  */
    8734 #line 2442 "parser.yy"
     8672  case 654:
     8673
     8674/* Line 1806 of yacc.c  */
     8675#line 2484 "parser.yy"
     8676    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8677    break;
     8678
     8679  case 655:
     8680
     8681/* Line 1806 of yacc.c  */
     8682#line 2486 "parser.yy"
     8683    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8684    break;
     8685
     8686  case 656:
     8687
     8688/* Line 1806 of yacc.c  */
     8689#line 2488 "parser.yy"
     8690    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8691    break;
     8692
     8693  case 657:
     8694
     8695/* Line 1806 of yacc.c  */
     8696#line 2493 "parser.yy"
     8697    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8698    break;
     8699
     8700  case 658:
     8701
     8702/* Line 1806 of yacc.c  */
     8703#line 2495 "parser.yy"
     8704    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8705    break;
     8706
     8707  case 659:
     8708
     8709/* Line 1806 of yacc.c  */
     8710#line 2497 "parser.yy"
     8711    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8712    break;
     8713
     8714  case 660:
     8715
     8716/* Line 1806 of yacc.c  */
     8717#line 2503 "parser.yy"
     8718    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8719    break;
     8720
     8721  case 661:
     8722
     8723/* Line 1806 of yacc.c  */
     8724#line 2505 "parser.yy"
     8725    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8726    break;
     8727
     8728  case 663:
     8729
     8730/* Line 1806 of yacc.c  */
     8731#line 2511 "parser.yy"
     8732    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8733    break;
     8734
     8735  case 664:
     8736
     8737/* Line 1806 of yacc.c  */
     8738#line 2513 "parser.yy"
     8739    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8740    break;
     8741
     8742  case 665:
     8743
     8744/* Line 1806 of yacc.c  */
     8745#line 2515 "parser.yy"
     8746    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8747    break;
     8748
     8749  case 666:
     8750
     8751/* Line 1806 of yacc.c  */
     8752#line 2517 "parser.yy"
     8753    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8754    break;
     8755
     8756  case 668:
     8757
     8758/* Line 1806 of yacc.c  */
     8759#line 2532 "parser.yy"
     8760    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8761    break;
     8762
     8763  case 669:
     8764
     8765/* Line 1806 of yacc.c  */
     8766#line 2534 "parser.yy"
     8767    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8768    break;
     8769
     8770  case 670:
     8771
     8772/* Line 1806 of yacc.c  */
     8773#line 2539 "parser.yy"
     8774    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8775    break;
     8776
     8777  case 671:
     8778
     8779/* Line 1806 of yacc.c  */
     8780#line 2541 "parser.yy"
     8781    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8782    break;
     8783
     8784  case 672:
     8785
     8786/* Line 1806 of yacc.c  */
     8787#line 2543 "parser.yy"
     8788    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8789    break;
     8790
     8791  case 673:
     8792
     8793/* Line 1806 of yacc.c  */
     8794#line 2545 "parser.yy"
     8795    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8796    break;
     8797
     8798  case 674:
     8799
     8800/* Line 1806 of yacc.c  */
     8801#line 2547 "parser.yy"
     8802    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8803    break;
     8804
     8805  case 676:
     8806
     8807/* Line 1806 of yacc.c  */
     8808#line 2553 "parser.yy"
     8809    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8810    break;
     8811
     8812  case 677:
     8813
     8814/* Line 1806 of yacc.c  */
     8815#line 2555 "parser.yy"
     8816    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8817    break;
     8818
     8819  case 678:
     8820
     8821/* Line 1806 of yacc.c  */
     8822#line 2557 "parser.yy"
     8823    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8824    break;
     8825
     8826  case 679:
     8827
     8828/* Line 1806 of yacc.c  */
     8829#line 2562 "parser.yy"
     8830    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8831    break;
     8832
     8833  case 680:
     8834
     8835/* Line 1806 of yacc.c  */
     8836#line 2564 "parser.yy"
     8837    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8838    break;
     8839
     8840  case 681:
     8841
     8842/* Line 1806 of yacc.c  */
     8843#line 2566 "parser.yy"
     8844    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8845    break;
     8846
     8847  case 683:
     8848
     8849/* Line 1806 of yacc.c  */
     8850#line 2573 "parser.yy"
    87358851    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87368852    break;
    87378853
    8738   case 643:
    8739 
    8740 /* Line 1806 of yacc.c  */
    8741 #line 2444 "parser.yy"
     8854  case 685:
     8855
     8856/* Line 1806 of yacc.c  */
     8857#line 2584 "parser.yy"
     8858    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8859    break;
     8860
     8861  case 686:
     8862
     8863/* Line 1806 of yacc.c  */
     8864#line 2587 "parser.yy"
     8865    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8866    break;
     8867
     8868  case 687:
     8869
     8870/* Line 1806 of yacc.c  */
     8871#line 2589 "parser.yy"
     8872    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8873    break;
     8874
     8875  case 688:
     8876
     8877/* Line 1806 of yacc.c  */
     8878#line 2592 "parser.yy"
     8879    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8880    break;
     8881
     8882  case 689:
     8883
     8884/* Line 1806 of yacc.c  */
     8885#line 2594 "parser.yy"
     8886    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8887    break;
     8888
     8889  case 690:
     8890
     8891/* Line 1806 of yacc.c  */
     8892#line 2596 "parser.yy"
     8893    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8894    break;
     8895
     8896  case 692:
     8897
     8898/* Line 1806 of yacc.c  */
     8899#line 2610 "parser.yy"
     8900    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8901    break;
     8902
     8903  case 693:
     8904
     8905/* Line 1806 of yacc.c  */
     8906#line 2612 "parser.yy"
     8907    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8908    break;
     8909
     8910  case 694:
     8911
     8912/* Line 1806 of yacc.c  */
     8913#line 2617 "parser.yy"
     8914    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8915    break;
     8916
     8917  case 695:
     8918
     8919/* Line 1806 of yacc.c  */
     8920#line 2619 "parser.yy"
     8921    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8922    break;
     8923
     8924  case 696:
     8925
     8926/* Line 1806 of yacc.c  */
     8927#line 2621 "parser.yy"
     8928    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8929    break;
     8930
     8931  case 697:
     8932
     8933/* Line 1806 of yacc.c  */
     8934#line 2623 "parser.yy"
     8935    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8936    break;
     8937
     8938  case 698:
     8939
     8940/* Line 1806 of yacc.c  */
     8941#line 2625 "parser.yy"
     8942    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8943    break;
     8944
     8945  case 700:
     8946
     8947/* Line 1806 of yacc.c  */
     8948#line 2631 "parser.yy"
    87428949    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87438950    break;
    87448951
    8745   case 644:
    8746 
    8747 /* Line 1806 of yacc.c  */
    8748 #line 2449 "parser.yy"
    8749     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8750     break;
    8751 
    8752   case 645:
    8753 
    8754 /* Line 1806 of yacc.c  */
    8755 #line 2451 "parser.yy"
     8952  case 701:
     8953
     8954/* Line 1806 of yacc.c  */
     8955#line 2633 "parser.yy"
     8956    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8957    break;
     8958
     8959  case 702:
     8960
     8961/* Line 1806 of yacc.c  */
     8962#line 2635 "parser.yy"
     8963    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8964    break;
     8965
     8966  case 703:
     8967
     8968/* Line 1806 of yacc.c  */
     8969#line 2640 "parser.yy"
    87568970    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87578971    break;
    87588972
    8759   case 647:
    8760 
    8761 /* Line 1806 of yacc.c  */
    8762 #line 2466 "parser.yy"
    8763     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8764     break;
    8765 
    8766   case 648:
    8767 
    8768 /* Line 1806 of yacc.c  */
    8769 #line 2468 "parser.yy"
    8770     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8771     break;
    8772 
    8773   case 649:
    8774 
    8775 /* Line 1806 of yacc.c  */
    8776 #line 2473 "parser.yy"
    8777     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8778     break;
    8779 
    8780   case 650:
    8781 
    8782 /* Line 1806 of yacc.c  */
    8783 #line 2475 "parser.yy"
    8784     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8785     break;
    8786 
    8787   case 651:
    8788 
    8789 /* Line 1806 of yacc.c  */
    8790 #line 2477 "parser.yy"
    8791     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8792     break;
    8793 
    8794   case 652:
    8795 
    8796 /* Line 1806 of yacc.c  */
    8797 #line 2479 "parser.yy"
    8798     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8799     break;
    8800 
    8801   case 653:
    8802 
    8803 /* Line 1806 of yacc.c  */
    8804 #line 2481 "parser.yy"
     8973  case 704:
     8974
     8975/* Line 1806 of yacc.c  */
     8976#line 2642 "parser.yy"
    88058977    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88068978    break;
    88078979
    8808   case 655:
    8809 
    8810 /* Line 1806 of yacc.c  */
    8811 #line 2487 "parser.yy"
    8812     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8813     break;
    8814 
    8815   case 656:
    8816 
    8817 /* Line 1806 of yacc.c  */
    8818 #line 2489 "parser.yy"
    8819     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8820     break;
    8821 
    8822   case 657:
    8823 
    8824 /* Line 1806 of yacc.c  */
    8825 #line 2491 "parser.yy"
    8826     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8827     break;
    8828 
    8829   case 658:
    8830 
    8831 /* Line 1806 of yacc.c  */
    8832 #line 2496 "parser.yy"
    8833     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8834     break;
    8835 
    8836   case 659:
    8837 
    8838 /* Line 1806 of yacc.c  */
    8839 #line 2498 "parser.yy"
    8840     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8841     break;
    8842 
    8843   case 660:
    8844 
    8845 /* Line 1806 of yacc.c  */
    8846 #line 2500 "parser.yy"
    8847     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8848     break;
    8849 
    8850   case 661:
    8851 
    8852 /* Line 1806 of yacc.c  */
    8853 #line 2506 "parser.yy"
    8854     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8855     break;
    8856 
    8857   case 662:
    8858 
    8859 /* Line 1806 of yacc.c  */
    8860 #line 2508 "parser.yy"
    8861     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8862     break;
    8863 
    8864   case 664:
    8865 
    8866 /* Line 1806 of yacc.c  */
    8867 #line 2514 "parser.yy"
    8868     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8869     break;
    8870 
    8871   case 665:
    8872 
    8873 /* Line 1806 of yacc.c  */
    8874 #line 2516 "parser.yy"
    8875     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8876     break;
    8877 
    8878   case 666:
    8879 
    8880 /* Line 1806 of yacc.c  */
    8881 #line 2518 "parser.yy"
    8882     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8883     break;
    8884 
    8885   case 667:
    8886 
    8887 /* Line 1806 of yacc.c  */
    8888 #line 2520 "parser.yy"
    8889     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8890     break;
    8891 
    8892   case 669:
    8893 
    8894 /* Line 1806 of yacc.c  */
    8895 #line 2535 "parser.yy"
    8896     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8897     break;
    8898 
    8899   case 670:
    8900 
    8901 /* Line 1806 of yacc.c  */
    8902 #line 2537 "parser.yy"
    8903     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8904     break;
    8905 
    8906   case 671:
    8907 
    8908 /* Line 1806 of yacc.c  */
    8909 #line 2542 "parser.yy"
    8910     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8911     break;
    8912 
    8913   case 672:
    8914 
    8915 /* Line 1806 of yacc.c  */
    8916 #line 2544 "parser.yy"
    8917     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8918     break;
    8919 
    8920   case 673:
    8921 
    8922 /* Line 1806 of yacc.c  */
    8923 #line 2546 "parser.yy"
    8924     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8925     break;
    8926 
    8927   case 674:
    8928 
    8929 /* Line 1806 of yacc.c  */
    8930 #line 2548 "parser.yy"
    8931     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8932     break;
    8933 
    8934   case 675:
    8935 
    8936 /* Line 1806 of yacc.c  */
    8937 #line 2550 "parser.yy"
    8938     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8939     break;
    8940 
    8941   case 677:
    8942 
    8943 /* Line 1806 of yacc.c  */
    8944 #line 2556 "parser.yy"
    8945     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8946     break;
    8947 
    8948   case 678:
    8949 
    8950 /* Line 1806 of yacc.c  */
    8951 #line 2558 "parser.yy"
    8952     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8953     break;
    8954 
    8955   case 679:
    8956 
    8957 /* Line 1806 of yacc.c  */
    8958 #line 2560 "parser.yy"
    8959     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8960     break;
    8961 
    8962   case 680:
    8963 
    8964 /* Line 1806 of yacc.c  */
    8965 #line 2565 "parser.yy"
    8966     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8967     break;
    8968 
    8969   case 681:
    8970 
    8971 /* Line 1806 of yacc.c  */
    8972 #line 2567 "parser.yy"
    8973     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8974     break;
    8975 
    8976   case 682:
    8977 
    8978 /* Line 1806 of yacc.c  */
    8979 #line 2569 "parser.yy"
    8980     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8981     break;
    8982 
    8983   case 684:
    8984 
    8985 /* Line 1806 of yacc.c  */
    8986 #line 2576 "parser.yy"
    8987     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8988     break;
    8989 
    8990   case 686:
    8991 
    8992 /* Line 1806 of yacc.c  */
    8993 #line 2587 "parser.yy"
    8994     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8995     break;
    8996 
    8997   case 687:
    8998 
    8999 /* Line 1806 of yacc.c  */
    9000 #line 2590 "parser.yy"
     8980  case 707:
     8981
     8982/* Line 1806 of yacc.c  */
     8983#line 2652 "parser.yy"
     8984    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8985    break;
     8986
     8987  case 710:
     8988
     8989/* Line 1806 of yacc.c  */
     8990#line 2662 "parser.yy"
     8991    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8992    break;
     8993
     8994  case 711:
     8995
     8996/* Line 1806 of yacc.c  */
     8997#line 2664 "parser.yy"
     8998    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8999    break;
     9000
     9001  case 712:
     9002
     9003/* Line 1806 of yacc.c  */
     9004#line 2666 "parser.yy"
     9005    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9006    break;
     9007
     9008  case 713:
     9009
     9010/* Line 1806 of yacc.c  */
     9011#line 2668 "parser.yy"
     9012    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9013    break;
     9014
     9015  case 714:
     9016
     9017/* Line 1806 of yacc.c  */
     9018#line 2670 "parser.yy"
     9019    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9020    break;
     9021
     9022  case 715:
     9023
     9024/* Line 1806 of yacc.c  */
     9025#line 2672 "parser.yy"
     9026    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9027    break;
     9028
     9029  case 716:
     9030
     9031/* Line 1806 of yacc.c  */
     9032#line 2679 "parser.yy"
     9033    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9034    break;
     9035
     9036  case 717:
     9037
     9038/* Line 1806 of yacc.c  */
     9039#line 2681 "parser.yy"
     9040    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9041    break;
     9042
     9043  case 718:
     9044
     9045/* Line 1806 of yacc.c  */
     9046#line 2683 "parser.yy"
     9047    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9048    break;
     9049
     9050  case 719:
     9051
     9052/* Line 1806 of yacc.c  */
     9053#line 2685 "parser.yy"
     9054    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     9055    break;
     9056
     9057  case 720:
     9058
     9059/* Line 1806 of yacc.c  */
     9060#line 2687 "parser.yy"
     9061    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9062    break;
     9063
     9064  case 721:
     9065
     9066/* Line 1806 of yacc.c  */
     9067#line 2689 "parser.yy"
     9068    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9069    break;
     9070
     9071  case 722:
     9072
     9073/* Line 1806 of yacc.c  */
     9074#line 2691 "parser.yy"
     9075    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9076    break;
     9077
     9078  case 723:
     9079
     9080/* Line 1806 of yacc.c  */
     9081#line 2693 "parser.yy"
     9082    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9083    break;
     9084
     9085  case 724:
     9086
     9087/* Line 1806 of yacc.c  */
     9088#line 2695 "parser.yy"
     9089    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     9090    break;
     9091
     9092  case 725:
     9093
     9094/* Line 1806 of yacc.c  */
     9095#line 2697 "parser.yy"
     9096    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9097    break;
     9098
     9099  case 726:
     9100
     9101/* Line 1806 of yacc.c  */
     9102#line 2702 "parser.yy"
    90019103    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    90029104    break;
    90039105
    9004   case 688:
    9005 
    9006 /* Line 1806 of yacc.c  */
    9007 #line 2592 "parser.yy"
    9008     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    9009     break;
    9010 
    9011   case 689:
    9012 
    9013 /* Line 1806 of yacc.c  */
    9014 #line 2595 "parser.yy"
     9106  case 727:
     9107
     9108/* Line 1806 of yacc.c  */
     9109#line 2704 "parser.yy"
    90159110    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    90169111    break;
    90179112
    9018   case 690:
    9019 
    9020 /* Line 1806 of yacc.c  */
    9021 #line 2597 "parser.yy"
    9022     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    9023     break;
    9024 
    9025   case 691:
    9026 
    9027 /* Line 1806 of yacc.c  */
    9028 #line 2599 "parser.yy"
    9029     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    9030     break;
    9031 
    9032   case 693:
    9033 
    9034 /* Line 1806 of yacc.c  */
    9035 #line 2613 "parser.yy"
    9036     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    9037     break;
    9038 
    9039   case 694:
    9040 
    9041 /* Line 1806 of yacc.c  */
    9042 #line 2615 "parser.yy"
    9043     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    9044     break;
    9045 
    9046   case 695:
    9047 
    9048 /* Line 1806 of yacc.c  */
    9049 #line 2620 "parser.yy"
    9050     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    9051     break;
    9052 
    9053   case 696:
    9054 
    9055 /* Line 1806 of yacc.c  */
    9056 #line 2622 "parser.yy"
    9057     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    9058     break;
    9059 
    9060   case 697:
    9061 
    9062 /* Line 1806 of yacc.c  */
    9063 #line 2624 "parser.yy"
    9064     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    9065     break;
    9066 
    9067   case 698:
    9068 
    9069 /* Line 1806 of yacc.c  */
    9070 #line 2626 "parser.yy"
    9071     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    9072     break;
    9073 
    9074   case 699:
    9075 
    9076 /* Line 1806 of yacc.c  */
    9077 #line 2628 "parser.yy"
    9078     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9079     break;
    9080 
    9081   case 701:
    9082 
    9083 /* Line 1806 of yacc.c  */
    9084 #line 2634 "parser.yy"
    9085     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    9086     break;
    9087 
    9088   case 702:
    9089 
    9090 /* Line 1806 of yacc.c  */
    9091 #line 2636 "parser.yy"
    9092     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    9093     break;
    9094 
    9095   case 703:
    9096 
    9097 /* Line 1806 of yacc.c  */
    9098 #line 2638 "parser.yy"
    9099     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9100     break;
    9101 
    9102   case 704:
    9103 
    9104 /* Line 1806 of yacc.c  */
    9105 #line 2643 "parser.yy"
    9106     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    9107     break;
    9108 
    9109   case 705:
    9110 
    9111 /* Line 1806 of yacc.c  */
    9112 #line 2645 "parser.yy"
    9113     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9114     break;
    9115 
    9116   case 708:
    9117 
    9118 /* Line 1806 of yacc.c  */
    9119 #line 2655 "parser.yy"
     9113  case 728:
     9114
     9115/* Line 1806 of yacc.c  */
     9116#line 2709 "parser.yy"
     9117    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     9118    break;
     9119
     9120  case 729:
     9121
     9122/* Line 1806 of yacc.c  */
     9123#line 2711 "parser.yy"
     9124    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     9125    break;
     9126
     9127  case 731:
     9128
     9129/* Line 1806 of yacc.c  */
     9130#line 2738 "parser.yy"
    91209131    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    91219132    break;
    91229133
    9123   case 711:
    9124 
    9125 /* Line 1806 of yacc.c  */
    9126 #line 2665 "parser.yy"
     9134  case 735:
     9135
     9136/* Line 1806 of yacc.c  */
     9137#line 2749 "parser.yy"
    91279138    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91289139    break;
    91299140
    9130   case 712:
    9131 
    9132 /* Line 1806 of yacc.c  */
    9133 #line 2667 "parser.yy"
     9141  case 736:
     9142
     9143/* Line 1806 of yacc.c  */
     9144#line 2751 "parser.yy"
    91349145    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91359146    break;
    91369147
    9137   case 713:
    9138 
    9139 /* Line 1806 of yacc.c  */
    9140 #line 2669 "parser.yy"
     9148  case 737:
     9149
     9150/* Line 1806 of yacc.c  */
     9151#line 2753 "parser.yy"
    91419152    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91429153    break;
    91439154
    9144   case 714:
    9145 
    9146 /* Line 1806 of yacc.c  */
    9147 #line 2671 "parser.yy"
     9155  case 738:
     9156
     9157/* Line 1806 of yacc.c  */
     9158#line 2755 "parser.yy"
    91489159    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91499160    break;
    91509161
    9151   case 715:
    9152 
    9153 /* Line 1806 of yacc.c  */
    9154 #line 2673 "parser.yy"
     9162  case 739:
     9163
     9164/* Line 1806 of yacc.c  */
     9165#line 2757 "parser.yy"
    91559166    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91569167    break;
    91579168
    9158   case 716:
    9159 
    9160 /* Line 1806 of yacc.c  */
    9161 #line 2675 "parser.yy"
     9169  case 740:
     9170
     9171/* Line 1806 of yacc.c  */
     9172#line 2759 "parser.yy"
    91629173    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91639174    break;
    91649175
    9165   case 717:
    9166 
    9167 /* Line 1806 of yacc.c  */
    9168 #line 2682 "parser.yy"
     9176  case 741:
     9177
     9178/* Line 1806 of yacc.c  */
     9179#line 2766 "parser.yy"
    91699180    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    91709181    break;
    91719182
    9172   case 718:
    9173 
    9174 /* Line 1806 of yacc.c  */
    9175 #line 2684 "parser.yy"
     9183  case 742:
     9184
     9185/* Line 1806 of yacc.c  */
     9186#line 2768 "parser.yy"
     9187    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9188    break;
     9189
     9190  case 743:
     9191
     9192/* Line 1806 of yacc.c  */
     9193#line 2770 "parser.yy"
    91769194    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91779195    break;
    91789196
    9179   case 719:
    9180 
    9181 /* Line 1806 of yacc.c  */
    9182 #line 2686 "parser.yy"
     9197  case 744:
     9198
     9199/* Line 1806 of yacc.c  */
     9200#line 2772 "parser.yy"
     9201    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9202    break;
     9203
     9204  case 745:
     9205
     9206/* Line 1806 of yacc.c  */
     9207#line 2774 "parser.yy"
    91839208    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    91849209    break;
    91859210
    9186   case 720:
    9187 
    9188 /* Line 1806 of yacc.c  */
    9189 #line 2688 "parser.yy"
    9190     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9191     break;
    9192 
    9193   case 721:
    9194 
    9195 /* Line 1806 of yacc.c  */
    9196 #line 2690 "parser.yy"
     9211  case 746:
     9212
     9213/* Line 1806 of yacc.c  */
     9214#line 2776 "parser.yy"
    91979215    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91989216    break;
    91999217
    9200   case 722:
    9201 
    9202 /* Line 1806 of yacc.c  */
    9203 #line 2692 "parser.yy"
    9204     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9205     break;
    9206 
    9207   case 723:
    9208 
    9209 /* Line 1806 of yacc.c  */
    9210 #line 2694 "parser.yy"
    9211     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9212     break;
    9213 
    9214   case 724:
    9215 
    9216 /* Line 1806 of yacc.c  */
    9217 #line 2696 "parser.yy"
    9218     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9219     break;
    9220 
    9221   case 725:
    9222 
    9223 /* Line 1806 of yacc.c  */
    9224 #line 2698 "parser.yy"
    9225     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9226     break;
    9227 
    9228   case 726:
    9229 
    9230 /* Line 1806 of yacc.c  */
    9231 #line 2700 "parser.yy"
    9232     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9233     break;
    9234 
    9235   case 727:
    9236 
    9237 /* Line 1806 of yacc.c  */
    9238 #line 2705 "parser.yy"
    9239     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    9240     break;
    9241 
    9242   case 728:
    9243 
    9244 /* Line 1806 of yacc.c  */
    9245 #line 2707 "parser.yy"
    9246     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9247     break;
    9248 
    9249   case 729:
    9250 
    9251 /* Line 1806 of yacc.c  */
    9252 #line 2712 "parser.yy"
    9253     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9254     break;
    9255 
    9256   case 730:
    9257 
    9258 /* Line 1806 of yacc.c  */
    9259 #line 2714 "parser.yy"
    9260     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9261     break;
    9262 
    9263   case 732:
    9264 
    9265 /* Line 1806 of yacc.c  */
    9266 #line 2741 "parser.yy"
    9267     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    9268     break;
    9269 
    9270   case 736:
    9271 
    9272 /* Line 1806 of yacc.c  */
    9273 #line 2752 "parser.yy"
    9274     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9275     break;
    9276 
    9277   case 737:
    9278 
    9279 /* Line 1806 of yacc.c  */
    9280 #line 2754 "parser.yy"
    9281     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9282     break;
    9283 
    9284   case 738:
    9285 
    9286 /* Line 1806 of yacc.c  */
    9287 #line 2756 "parser.yy"
    9288     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9289     break;
    9290 
    9291   case 739:
    9292 
    9293 /* Line 1806 of yacc.c  */
    9294 #line 2758 "parser.yy"
    9295     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9296     break;
    9297 
    9298   case 740:
    9299 
    9300 /* Line 1806 of yacc.c  */
    9301 #line 2760 "parser.yy"
    9302     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9303     break;
    9304 
    9305   case 741:
    9306 
    9307 /* Line 1806 of yacc.c  */
    9308 #line 2762 "parser.yy"
    9309     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9310     break;
    9311 
    9312   case 742:
    9313 
    9314 /* Line 1806 of yacc.c  */
    9315 #line 2769 "parser.yy"
    9316     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9317     break;
    9318 
    9319   case 743:
    9320 
    9321 /* Line 1806 of yacc.c  */
    9322 #line 2771 "parser.yy"
    9323     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9324     break;
    9325 
    9326   case 744:
    9327 
    9328 /* Line 1806 of yacc.c  */
    9329 #line 2773 "parser.yy"
    9330     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9331     break;
    9332 
    9333   case 745:
    9334 
    9335 /* Line 1806 of yacc.c  */
    9336 #line 2775 "parser.yy"
    9337     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9338     break;
    9339 
    9340   case 746:
    9341 
    9342 /* Line 1806 of yacc.c  */
    9343 #line 2777 "parser.yy"
    9344     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9345     break;
    9346 
    93479218  case 747:
    93489219
    93499220/* Line 1806 of yacc.c  */
    9350 #line 2779 "parser.yy"
    9351     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9221#line 2781 "parser.yy"
     9222    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    93529223    break;
    93539224
     
    93559226
    93569227/* Line 1806 of yacc.c  */
    9357 #line 2784 "parser.yy"
    9358     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     9228#line 2786 "parser.yy"
     9229    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    93599230    break;
    93609231
     
    93629233
    93639234/* Line 1806 of yacc.c  */
    9364 #line 2789 "parser.yy"
    9365     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     9235#line 2788 "parser.yy"
     9236    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    93669237    break;
    93679238
     
    93699240
    93709241/* Line 1806 of yacc.c  */
    9371 #line 2791 "parser.yy"
     9242#line 2790 "parser.yy"
    93729243    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    93739244    break;
    93749245
    9375   case 751:
    9376 
    9377 /* Line 1806 of yacc.c  */
    9378 #line 2793 "parser.yy"
    9379     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     9246  case 753:
     9247
     9248/* Line 1806 of yacc.c  */
     9249#line 2814 "parser.yy"
     9250    { (yyval.en) = 0; }
    93809251    break;
    93819252
     
    93839254
    93849255/* Line 1806 of yacc.c  */
    9385 #line 2817 "parser.yy"
    9386     { (yyval.en) = 0; }
    9387     break;
    9388 
    9389   case 755:
    9390 
    9391 /* Line 1806 of yacc.c  */
    9392 #line 2819 "parser.yy"
     9256#line 2816 "parser.yy"
    93939257    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    93949258    break;
     
    93979261
    93989262/* Line 1806 of yacc.c  */
    9399 #line 9400 "Parser/parser.cc"
     9263#line 9264 "Parser/parser.cc"
    94009264      default: break;
    94019265    }
     
    96289492
    96299493/* Line 2067 of yacc.c  */
    9630 #line 2822 "parser.yy"
     9494#line 2819 "parser.yy"
    96319495
    96329496// ----end of grammar----
  • src/Parser/parser.h

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

    rf80e0218 r1b5c81ed  
    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 : Mon Jun 27 17:47:56 2016
    13 // Update Count     : 1627
    14 //
     12// Last Modified On : Wed Apr 13 16:58:43 2016
     13// Update Count     : 1519
     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. designation with and without '=' (use ':' instead)
    34 // 2. attributes not allowed in parenthesis of declarator
     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
    3537//
    3638// All of the syntactic extensions for GCC C are marked with the comment "GCC". The second extensions are for Cforall
     
    7779%token TYPEOF LABEL                                                                             // GCC
    7880%token ENUM STRUCT UNION
    79 %token OTYPE FTYPE DTYPE TRAIT                                                  // CFA
     81%token OTYPE FTYPE DTYPE TRAIT                                          // CFA
    8082%token SIZEOF OFFSETOF
    8183%token ATTRIBUTE EXTENSION                                                              // GCC
     
    129131%type<constant> constant
    130132%type<en> tuple                                                 tuple_expression_list
    131 %type<en> ptrref_operator                               unary_operator                          assignment_operator
     133%type<en> unary_operator                                assignment_operator
    132134%type<en> primary_expression                    postfix_expression                      unary_expression
    133135%type<en> cast_expression                               multiplicative_expression       additive_expression                     shift_expression
     
    224226%type<decl> typedef type_array typedef_declaration typedef_declaration_specifier typedef_expression
    225227%type<decl> type_function type_parameter_array type_parameter_function type_parameter_ptr
    226 %type<decl> type_parameter_redeclarator type_ptr variable_type_redeclarator typedef_type_specifier
     228%type<decl> type_parameter_redeclarator type_ptr type_redeclarator typedef_type_specifier
    227229%type<decl> typegen_declaration_specifier typegen_type_specifier typegen_name
    228230
     
    350352        primary_expression
    351353        | postfix_expression '[' push assignment_expression pop ']'
    352                 // CFA, comma_expression disallowed in this context because it results in a common user error: subscripting a
     354                // CFA, comma_expression disallowed in the context because it results in a commom user error: subscripting a
    353355                // matrix with x[i,j] instead of x[i][j]. While this change is not backwards compatible, there seems to be
    354356                // little advantage to this feature and many disadvantages. It is possible to write x[(i,j)] in CFA, which is
     
    421423unary_expression:
    422424        postfix_expression
    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
     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
    425427        | constant
    426428                { $$ = $1; }
    427429        | string_literal_list
    428430                { $$ = $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 ); }
    438431        | ICR unary_expression
    439432                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), $2 ); }
    440433        | DECR unary_expression
    441434                { $$ = 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.
    442447        | SIZEOF unary_expression
    443448                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), $2 ); }
     
    456461        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    457462                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 ) ); }
    458 //      | ANDAND IDENTIFIER                                                                     // GCC, address of label
    459 //              { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }
    460         ;
    461 
    462 ptrref_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 ); }
     463        | ANDAND no_attr_identifier                                                     // GCC, address of label
     464                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }
    467465        ;
    468466
    469467unary_operator:
    470         '+'                                                                                     { $$ = new OperatorNode( OperatorNode::UnPlus ); }
     468        '&'                                                                                     { $$ = new OperatorNode( OperatorNode::AddressOf ); }
     469        | '+'                                                                           { $$ = new OperatorNode( OperatorNode::UnPlus ); }
    471470        | '-'                                                                           { $$ = new OperatorNode( OperatorNode::UnMinus ); }
    472         | '!'                                                                           { $$ = new OperatorNode( OperatorNode::Neg ); }
    473471        | '~'                                                                           { $$ = new OperatorNode( OperatorNode::BitNeg ); }
    474472        ;
     
    648646                        Token fn; fn.str = new std::string( "^?{}" ); // location undefined
    649647                        $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
    650                                 (ExpressionNode *)( $2 )->set_link( $4 ) ), 0 );
     648                                (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), $2 ))->set_link( $4 ) ), 0 );
    651649                }
    652650        ;
    653651
    654652labeled_statement:
    655                 // labels cannot be identifiers 0 or 1
    656         IDENTIFIER ':' attribute_list_opt statement
     653        no_attr_identifier ':' attribute_list_opt statement
    657654                {
    658655                        $$ = $4->add_label( $1 );
     
    682679                { $$ = new StatementNode( $1 ); }
    683680        | EXTENSION declaration                                                         // GCC
    684                 { $$ = new StatementNode( $2 )/*->set_extension( true )*/; }
     681                { $$ = new StatementNode( $2 ); }
    685682        | function_definition
    686683                { $$ = new StatementNode( $1 ); }
     
    807804
    808805jump_statement:
    809         GOTO IDENTIFIER ';'
     806        GOTO no_attr_identifier ';'
    810807                { $$ = new StatementNode( StatementNode::Goto, $2 ); }
    811808        | GOTO '*' comma_expression ';'                                         // GCC, computed goto
     
    816813                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    817814                { $$ = new StatementNode( StatementNode::Continue ); }
    818         | CONTINUE IDENTIFIER ';'                                       // CFA, multi-level continue
     815        | CONTINUE no_attr_identifier ';'                                       // CFA, multi-level continue
    819816                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    820817                // the target of the transfer appears only at the start of an iteration statement.
     
    823820                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    824821                { $$ = new StatementNode( StatementNode::Break ); }
    825         | BREAK IDENTIFIER ';'                                          // CFA, multi-level exit
     822        | BREAK no_attr_identifier ';'                                          // CFA, multi-level exit
    826823                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    827824                // the target of the transfer appears only at the start of an iteration statement.
     
    14721469        new_field_declaring_list ';'                                            // CFA, new style field declaration
    14731470        | EXTENSION new_field_declaring_list ';'                        // GCC
    1474                 { $$ = $2/*->set_extension( true )*/; }
     1471                { $$ = $2; }
    14751472        | field_declaring_list ';'
    14761473        | EXTENSION field_declaring_list ';'                            // GCC
    1477                 { $$ = $2/*->set_extension( true )*/; }
     1474                { $$ = $2; }
    14781475        ;
    14791476
     
    15031500                // A semantic check is required to ensure bit_subrange only appears on base type int.
    15041501                { $$ = $1->addBitfield( $2 ); }
    1505         | variable_type_redeclarator bit_subrange_size_opt
     1502        | type_redeclarator bit_subrange_size_opt
    15061503                // A semantic check is required to ensure bit_subrange only appears on base type int.
    15071504                { $$ = $1->addBitfield( $2 ); }
     
    17051702                { $$ = $2; }
    17061703        | ATassign initializer
    1707                 { $$ = $2->set_maybeConstructed( false ); }
     1704                { $$ = $2; }
    17081705        ;
    17091706
     
    17471744
    17481745designator:
    1749                 // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0 only ".0" and ".1"
    1750                 // allowed => semantic check
     1746        // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0
     1747        // only ".0" and ".1" allowed => semantic check
    17511748        FLOATINGconstant
    17521749                { $$ = new DesignatorNode( new VarRefNode( $1 ) ); }
     
    19911988                }
    19921989        | EXTENSION external_definition
    1993                 { $$ = $2/*->set_extension( true )*/; }
     1990                { $$ = $2; }
    19941991        ;
    19951992
     
    19971994        function_definition
    19981995                // These rules are a concession to the "implicit int" type_specifier because there is a significant amount of
    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)
     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)
    20031999        | function_declarator compound_statement
    20042000                {
     
    20782074declarator:
    20792075        variable_declarator
    2080         | variable_type_redeclarator
    20812076        | function_declarator
     2077        | type_redeclarator
    20822078        ;
    20832079
     
    21792175
    21802176variable_ptr:
    2181         ptrref_operator variable_declarator
     2177        '*' variable_declarator
    21822178                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2183         | ptrref_operator type_qualifier_list variable_declarator
     2179        | '*' type_qualifier_list variable_declarator
    21842180                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    21852181        | '(' variable_ptr ')'
     
    22052201        ;
    22062202
    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.
     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.
    22102207
    22112208function_declarator:
     
    22272224
    22282225function_ptr:
    2229         ptrref_operator function_declarator
     2226        '*' function_declarator
    22302227                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2231         | ptrref_operator type_qualifier_list function_declarator
     2228        | '*' type_qualifier_list function_declarator
    22322229                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    22332230        | '(' function_ptr ')'
     
    22642261
    22652262old_function_ptr:
    2266         ptrref_operator old_function_declarator
     2263        '*' old_function_declarator
    22672264                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2268         | ptrref_operator type_qualifier_list old_function_declarator
     2265        | '*' type_qualifier_list old_function_declarator
    22692266                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    22702267        | '(' old_function_ptr ')'
     
    22912288// and functions versus pointers to arrays and functions.
    22922289
    2293 variable_type_redeclarator:
     2290type_redeclarator:
    22942291        paren_type attribute_list_opt
    22952292                { $$ = $1->addQualifiers( $2 ); }
     
    23082305
    23092306type_ptr:
    2310         ptrref_operator variable_type_redeclarator
     2307        '*' type_redeclarator
    23112308                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2312         | ptrref_operator type_qualifier_list variable_type_redeclarator
     2309        | '*' type_qualifier_list type_redeclarator
    23132310                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    23142311        | '(' type_ptr ')'
     
    23522349
    23532350identifier_parameter_ptr:
    2354         ptrref_operator identifier_parameter_declarator
     2351        '*' identifier_parameter_declarator
    23552352                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2356         | ptrref_operator type_qualifier_list identifier_parameter_declarator
     2353        | '*' type_qualifier_list identifier_parameter_declarator
    23572354                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    23582355        | '(' identifier_parameter_ptr ')'
     
    23932390//              not as redundant parentheses around the identifier."
    23942391//
    2395 // For example:
     2392// which precludes the following cases:
    23962393//
    23972394//              typedef float T;
     
    24302427
    24312428type_parameter_ptr:
    2432         ptrref_operator type_parameter_redeclarator
     2429        '*' type_parameter_redeclarator
    24332430                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2434         | ptrref_operator type_qualifier_list type_parameter_redeclarator
     2431        | '*' type_qualifier_list type_parameter_redeclarator
    24352432                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    24362433        | '(' type_parameter_ptr ')'
     
    24702467
    24712468abstract_ptr:
    2472         ptrref_operator
     2469        '*'
    24732470                { $$ = DeclarationNode::newPointer( 0 ); }
    2474         | ptrref_operator type_qualifier_list
     2471        | '*' type_qualifier_list
    24752472                { $$ = DeclarationNode::newPointer( $2 ); }
    2476         | ptrref_operator abstract_declarator
     2473        | '*' abstract_declarator
    24772474                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2478         | ptrref_operator type_qualifier_list abstract_declarator
     2475        | '*' type_qualifier_list abstract_declarator
    24792476                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    24802477        | '(' abstract_ptr ')'
     
    25392536
    25402537abstract_parameter_ptr:
    2541         ptrref_operator
     2538        '*'
    25422539                { $$ = DeclarationNode::newPointer( 0 ); }
    2543         | ptrref_operator type_qualifier_list
     2540        | '*' type_qualifier_list
    25442541                { $$ = DeclarationNode::newPointer( $2 ); }
    2545         | ptrref_operator abstract_parameter_declarator
     2542        | '*' abstract_parameter_declarator
    25462543                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2547         | ptrref_operator type_qualifier_list abstract_parameter_declarator
     2544        | '*' type_qualifier_list abstract_parameter_declarator
    25482545                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    25492546        | '(' abstract_parameter_ptr ')'
     
    26172614
    26182615variable_abstract_ptr:
    2619         ptrref_operator
     2616        '*'
    26202617                { $$ = DeclarationNode::newPointer( 0 ); }
    2621         | ptrref_operator type_qualifier_list
     2618        | '*' type_qualifier_list
    26222619                { $$ = DeclarationNode::newPointer( $2 ); }
    2623         | ptrref_operator variable_abstract_declarator
     2620        | '*' variable_abstract_declarator
    26242621                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2625         | ptrref_operator type_qualifier_list variable_abstract_declarator
     2622        | '*' type_qualifier_list variable_abstract_declarator
    26262623                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    26272624        | '(' variable_abstract_ptr ')'
     
    26622659
    26632660new_identifier_parameter_ptr:                                                   // CFA
    2664         ptrref_operator type_specifier
     2661        '*' type_specifier
    26652662                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2666         | type_qualifier_list ptrref_operator type_specifier
     2663        | type_qualifier_list '*' type_specifier
    26672664                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2668         | ptrref_operator new_abstract_function
     2665        | '*' new_abstract_function
    26692666                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2670         | type_qualifier_list ptrref_operator new_abstract_function
     2667        | type_qualifier_list '*' new_abstract_function
    26712668                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2672         | ptrref_operator new_identifier_parameter_declarator_tuple
     2669        | '*' new_identifier_parameter_declarator_tuple
    26732670                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2674         | type_qualifier_list ptrref_operator new_identifier_parameter_declarator_tuple
     2671        | type_qualifier_list '*' new_identifier_parameter_declarator_tuple
    26752672                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    26762673        ;
     
    27492746
    27502747new_abstract_ptr:                                                                               // CFA
    2751         ptrref_operator type_specifier
     2748        '*' type_specifier
    27522749                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2753         | type_qualifier_list ptrref_operator type_specifier
     2750        | type_qualifier_list '*' type_specifier
    27542751                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2755         | ptrref_operator new_abstract_function
     2752        | '*' new_abstract_function
    27562753                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2757         | type_qualifier_list ptrref_operator new_abstract_function
     2754        | type_qualifier_list '*' new_abstract_function
    27582755                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2759         | ptrref_operator new_abstract_declarator_tuple
     2756        | '*' new_abstract_declarator_tuple
    27602757                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2761         | type_qualifier_list ptrref_operator new_abstract_declarator_tuple
     2758        | type_qualifier_list '*' new_abstract_declarator_tuple
    27622759                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    27632760        ;
  • src/ResolvExpr/AlternativeFinder.cc

    rf80e0218 r1b5c81ed  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:52:08 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 13 16:13:54 2016
    13 // Update Count     : 25
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Feb 10 17:00:04 2016
     13// Update Count     : 24
    1414//
    1515
     
    1919#include <functional>
    2020#include <cassert>
    21 #include <unordered_map>
    22 #include <utility>
    23 #include <vector>
    2421
    2522#include "AlternativeFinder.h"
     
    4239#include "Tuples/NameMatcher.h"
    4340#include "Common/utility.h"
    44 #include "InitTweak/InitTweak.h"
    4541
    4642extern bool resolvep;
     
    411407        }
    412408
    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
     409        static const int recursionLimit = 10;
    418410
    419411        void addToIndexer( AssertionSet &assertSet, SymTab::Indexer &indexer ) {
     
    424416                }
    425417        }
    426        
     418
    427419        template< typename ForwardIterator, typename OutputIterator >
    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 ) {
     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 ) {
    430421                if ( begin == end ) {
    431422                        if ( newNeed.empty() ) {
     
    440431                                        printAssertionSet( newNeed, std::cerr, 8 );
    441432                                )
    442                                 inferRecursive( newNeed.begin(), newNeed.end(), newAlt, openVars, decls, newerNeed, /*needParents,*/ level+1, indexer, out );
     433                                inferRecursive( newNeed.begin(), newNeed.end(), newAlt, openVars, decls, newerNeed, level+1, indexer, out );
    443434                                return;
    444435                        }
     
    447438                ForwardIterator cur = begin++;
    448439                if ( ! cur->second ) {
    449                         inferRecursive( begin, end, newAlt, openVars, decls, newNeed, /*needParents,*/ level, indexer, out );
     440                        inferRecursive( begin, end, newAlt, openVars, decls, newNeed, level, indexer, out );
    450441                }
    451442                DeclarationWithType *curDecl = cur->first;
     
    464455                                std::cerr << std::endl;
    465456                        )
    466                        
    467457                        AssertionSet newHave, newerNeed( newNeed );
    468458                        TypeEnvironment newEnv( newAlt.env );
     
    487477                                newerAlt.env = newEnv;
    488478                                assert( (*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 );
     479                                Expression *varExpr = new VariableExpr( static_cast< DeclarationWithType* >( Declaration::declFromId( (*candidate)->get_uniqueId() ) ) );
    495480                                deleteAll( varExpr->get_results() );
    496481                                varExpr->get_results().clear();
     
    506491                                // XXX: this is a memory leak, but adjType can't be deleted because it might contain assertions
    507492                                appExpr->get_inferParams()[ curDecl->get_uniqueId() ] = ParamEntry( (*candidate)->get_uniqueId(), adjType->clone(), curDecl->get_type()->clone(), varExpr );
    508                                 inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, /*newNeedParents,*/ level, indexer, out );
     493                                inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, level, indexer, out );
    509494                        } else {
    510495                                delete adjType;
     
    528513                addToIndexer( have, decls );
    529514                AssertionSet newNeed;
    530                 //AssertionParentSet needParents;
    531                 inferRecursive( need.begin(), need.end(), newAlt, openVars, decls, newNeed, /*needParents,*/ 0, indexer, out );
     515                inferRecursive( need.begin(), need.end(), newAlt, openVars, decls, newNeed, 0, indexer, out );
    532516//      PRINT(
    533517//          std::cerr << "declaration 14 is ";
     
    562546
    563547                {
    564                         std::string fname = InitTweak::getFunctionName( untypedExpr );
    565                         if ( fname == "&&" ) {
     548                        NameExpr *fname = 0;;
     549                        if ( ( fname = dynamic_cast<NameExpr *>( untypedExpr->get_function()))
     550                                 && ( fname->get_name() == std::string("&&")) ) {
    566551                                VoidType v = Type::Qualifiers();                // resolve to type void *
    567552                                PointerType pt( Type::Qualifiers(), v.clone() );
     
    772757                for ( std::list< DeclarationWithType* >::iterator i = declList.begin(); i != declList.end(); ++i ) {
    773758                        VariableExpr newExpr( *i, nameExpr->get_argName() );
    774                         newExpr.set_extension( nameExpr->get_extension() );
    775759                        alternatives.push_back( Alternative( newExpr.clone(), env, Cost() ) );
    776760                        PRINT(
     
    998982                } // for
    999983        }
    1000 
    1001         void AlternativeFinder::visit( ImplicitCopyCtorExpr * impCpCtorExpr ) {
    1002                 alternatives.push_back( Alternative( impCpCtorExpr->clone(), env, Cost::zero ) );
    1003         }
    1004984} // namespace ResolvExpr
    1005985
  • src/ResolvExpr/AlternativeFinder.h

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Tue Apr 19 11:44:53 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat May 16 23:58:43 2015
    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 );
    6867          public:  // xxx - temporary hack - should make Tuples::TupleAssignment a friend
    6968                template< typename InputIterator, typename OutputIterator >
  • src/ResolvExpr/CommonType.cc

    rf80e0218 r1b5c81ed  
    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
    142136                } // if
    143137        }
     
    189183        }
    190184
    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
     185        void CommonType::visit( EnumInstType *aggregateUseType ) {
    199186        }
    200187
  • src/ResolvExpr/ConversionCost.cc

    rf80e0218 r1b5c81ed  
    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                 } 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
     159                } // if
    163160        }
    164161
  • src/ResolvExpr/RenameVars.cc

    rf80e0218 r1b5c81ed  
    4545        void RenameVars::visit( PointerType *pointerType ) {
    4646                typeBefore( pointerType );
     47///   std::cout << "do pointer" << std::endl;
    4748                maybeAccept( pointerType->get_base(), *this );
     49///   std::cout << "done pointer" << std::endl;
    4850                typeAfter( pointerType );
    4951        }
     
    5860        void RenameVars::visit( FunctionType *functionType ) {
    5961                typeBefore( functionType );
     62///   std::cout << "return vals" << std::endl;
    6063                acceptAll( functionType->get_returnVals(), *this );
     64///   std::cout << functionType->get_parameters().size() << " parameters" << std::endl;
    6165                acceptAll( functionType->get_parameters(), *this );
     66///   std::cout << "done function" << std::endl;
    6267                typeAfter( functionType );
    6368        }
     
    9095        void RenameVars::visit( TypeInstType *instType ) {
    9196                typeBefore( instType );
     97///   std::cout << "instance of type " << instType->get_name() << std::endl;
    9298                std::map< std::string, std::string >::const_iterator i = mapStack.front().find( instType->get_name() );
    9399                if ( i != mapStack.front().end() ) {
     100///     std::cout << "found name " << i->second << std::endl;
    94101                        instType->set_name( i->second );
    95102                } else {
     103///     std::cout << "no name found" << std::endl;
    96104                } // if
    97105                acceptAll( instType->get_parameters(), *this );
     
    112120        void RenameVars::typeBefore( Type *type ) {
    113121                if ( ! type->get_forall().empty() ) {
     122///     std::cout << "type with forall: ";
     123///     type->print( std::cout );
     124///     std::cout << std::endl;
    114125                        // copies current name mapping into new mapping
    115126                        mapStack.push_front( mapStack.front() );
  • src/ResolvExpr/Resolver.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Fri May 13 11:36:40 2016
    13 // Update Count     : 203
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Mar 24 16:43:11 2016
     13// Update Count     : 181
    1414//
    1515
     
    2525#include "SymTab/Indexer.h"
    2626#include "Common/utility.h"
    27 #include "InitTweak/InitTweak.h"
    2827
    2928#include <iostream>
     
    3433          public:
    3534                Resolver() : SymTab::Indexer( false ), switchType( 0 ) {}
    36 
     35 
    3736                virtual void visit( FunctionDecl *functionDecl );
    3837                virtual void visit( ObjectDecl *functionDecl );
    3938                virtual void visit( TypeDecl *typeDecl );
    40                 virtual void visit( EnumDecl * enumDecl );
    4139
    4240                virtual void visit( ArrayType * at );
     
    5351                virtual void visit( BranchStmt *branchStmt );
    5452                virtual void visit( ReturnStmt *returnStmt );
    55                 virtual void visit( ImplicitCtorDtorStmt * impCtorDtorStmt );
    5653
    5754                virtual void visit( SingleInit *singleInit );
    5855                virtual void visit( ListInit *listInit );
    59                 virtual void visit( ConstructorInit *ctorInit );
    6056          private:
    6157        typedef std::list< Initializer * >::iterator InitIterator;
     
    6359          void resolveAggrInit( AggregateDecl *, InitIterator &, InitIterator & );
    6460          void resolveSingleAggrInit( Declaration *, InitIterator &, InitIterator & );
    65           void fallbackInit( ConstructorInit * ctorInit );
     61
    6662                std::list< Type * > functionReturn;
    6763                Type *initContext;
    6864                Type *switchType;
    69                 bool inEnumDecl = false;
    7065        };
    7166
     
    8782        }
    8883
    89 
    9084        namespace {
    9185                void finishExpr( Expression *expr, const TypeEnvironment &env ) {
     
    9387                        env.makeSubstitution( *expr->get_env() );
    9488                }
    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 {
     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 
    10698                Expression *findSingleExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
    10799                        TypeEnvironment env;
     
    134126                        } // if
    135127                }
    136 
     128 
    137129                Expression *findIntegralExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
    138130                        TypeEnvironment env;
     
    167159                        return newExpr;
    168160                }
    169 
    170         }
    171 
     161 
     162        }
     163 
    172164        void Resolver::visit( ObjectDecl *objectDecl ) {
    173165                Type *new_type = resolveTypeof( objectDecl->get_type(), *this );
     
    180172                Type *temp = initContext;
    181173                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                 }
    187174                SymTab::Indexer::visit( objectDecl );
    188                 if ( inEnumDecl && dynamic_cast< EnumInstType * >( initContext ) ) {
    189                         // delete newly created signed int type
    190                         delete initContext;
    191                 }
    192175                initContext = temp;
    193176        }
     
    229212        }
    230213
    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 
    239214        void Resolver::visit( ExprStmt *exprStmt ) {
    240215                if ( exprStmt->get_expr() ) {
     
    283258                        forStmt->set_condition( newExpr );
    284259                } // if
    285 
     260               
    286261                if ( forStmt->get_increment() ) {
    287262                        Expression * newExpr = findVoidExpression( forStmt->get_increment(), *this );
     
    297272                delete switchStmt->get_condition();
    298273                switchStmt->set_condition( newExpr );
    299 
     274 
    300275                visitor.Visitor::visit( switchStmt );
    301276        }
     
    339314        bool isCharType( T t ) {
    340315                if ( BasicType * bt = dynamic_cast< BasicType * >( t ) ) {
    341                         return bt->get_kind() == BasicType::Char || bt->get_kind() == BasicType::SignedChar ||
     316                        return bt->get_kind() == BasicType::Char || bt->get_kind() == BasicType::SignedChar || 
    342317                                bt->get_kind() == BasicType::UnsignedChar;
    343318                }
     
    351326                                string n = ne->get_name();
    352327                                if (n == "0") {
    353                                         initContext = new BasicType(Type::Qualifiers(),
     328                                        initContext = new BasicType(Type::Qualifiers(), 
    354329                                                                                                BasicType::SignedInt);
    355330                                } else {
     
    357332                                        initContext = decl->get_type();
    358333                                }
    359                         } else if (ConstantExpr * e =
     334                        } else if (ConstantExpr * e = 
    360335                                           dynamic_cast<ConstantExpr*>(singleInit->get_value())) {
    361336                                Constant *c = e->get_constant();
     
    380355                                                        singleInit->set_value( ce->get_arg() );
    381356                                                        ce->set_arg( NULL );
    382                                                         delete ce;
     357                                                        delete ce;                                                                     
    383358                                                }
    384359                                        }
     
    496471#endif
    497472        }
    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         }
    579473} // namespace ResolvExpr
    580474
  • src/ResolvExpr/Resolver.h

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Thu Apr 14 15:06:53 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sun May 17 12:19:32 2015
    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 );
    2726} // namespace ResolvExpr
    2827
  • src/ResolvExpr/typeops.h

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

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Thu Apr 14 15:52:42 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Apr  7 14:42:21 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 
    6550} // namespace SymTab
    6651
  • src/SymTab/Indexer.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Fri Apr 22 15:25:43 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Mar  2 17:31:29 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                 // needs to be on the heap because addStruct saves the pointer
    216                 StructDecl &fwdDecl = *new StructDecl( aggregateDecl->get_name() );
     215                StructDecl fwdDecl( aggregateDecl->get_name() );
    217216                cloneAll( aggregateDecl->get_parameters(), fwdDecl.get_parameters() );
    218217                debugPrint( "Adding fwd decl for struct " << fwdDecl.get_name() << std::endl );
    219218                addStruct( &fwdDecl );
    220 
     219 
    221220                enterScope();
    222221                acceptAll( aggregateDecl->get_parameters(), *this );
    223222                acceptAll( aggregateDecl->get_members(), *this );
    224223                leaveScope();
    225 
     224 
    226225                debugPrint( "Adding struct " << aggregateDecl->get_name() << std::endl );
    227226                // this addition replaces the forward declaration
     
    235234                debugPrint( "Adding fwd decl for union " << fwdDecl.get_name() << std::endl );
    236235                addUnion( &fwdDecl );
    237 
     236 
    238237                enterScope();
    239238                acceptAll( aggregateDecl->get_parameters(), *this );
    240239                acceptAll( aggregateDecl->get_members(), *this );
    241240                leaveScope();
    242 
     241 
    243242                debugPrint( "Adding union " << aggregateDecl->get_name() << std::endl );
    244243                addUnion( aggregateDecl );
     
    257256                acceptAll( aggregateDecl->get_members(), *this );
    258257                leaveScope();
    259 
     258 
    260259                debugPrint( "Adding context " << aggregateDecl->get_name() << std::endl );
    261260                addTrait( aggregateDecl );
     
    439438        }
    440439
    441 
     440       
    442441
    443442        void Indexer::lookupId( const std::string &id, std::list< DeclarationWithType* > &out ) const {
    444443                std::unordered_set< std::string > foundMangleNames;
    445 
     444               
    446445                Indexer::Impl *searchTables = tables;
    447446                while ( searchTables ) {
     
    453452                                        // mark the mangled name as found, skipping this insertion if a declaration for that name has already been found
    454453                                        if ( foundMangleNames.insert( decl->first ).second == false ) continue;
    455 
     454                                       
    456455                                        out.push_back( decl->second );
    457456                                }
    458457                        }
    459 
     458                       
    460459                        // get declarations from base indexers
    461460                        searchTables = searchTables->base.tables;
     
    512511        }
    513512
    514         bool Indexer::hasIncompatibleCDecl( const std::string &id, const std::string &mangleName, unsigned long scope ) const {
     513        bool Indexer::hasIncompatibleCDecl( const std::string &id, const std::string &mangleName ) const {
    515514                if ( ! tables ) return false;
    516                 if ( tables->scope < scope ) return false;
    517515
    518516                IdTable::const_iterator decls = tables->idTable.find( id );
     
    520518                        const MangleTable &mangleTable = decls->second;
    521519                        for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) {
    522                                 // check for C decls with the same name, skipping
     520                                // check for C decls with the same name, skipping 
    523521                                // those with a compatible type (by mangleName)
    524522                                if ( decl->second->get_linkage() == LinkageSpec::C && decl->first != mangleName ) return true;
     
    526524                }
    527525
    528                 return tables->base.hasIncompatibleCDecl( id, mangleName, scope );
    529         }
    530 
     526                return tables->base.hasIncompatibleCDecl( id, mangleName );
     527        }
     528       
    531529        NamedTypeDecl *Indexer::lookupTypeAtScope( const std::string &id, unsigned long scope ) const {
    532530                if ( ! tables ) return 0;
     
    536534                return ret != tables->typeTable.end() ? ret->second : tables->base.lookupTypeAtScope( id, scope );
    537535        }
    538 
     536       
    539537        StructDecl *Indexer::lookupStructAtScope( const std::string &id, unsigned long scope ) const {
    540538                if ( ! tables ) return 0;
     
    544542                return ret != tables->structTable.end() ? ret->second : tables->base.lookupStructAtScope( id, scope );
    545543        }
    546 
     544       
    547545        EnumDecl *Indexer::lookupEnumAtScope( const std::string &id, unsigned long scope ) const {
    548546                if ( ! tables ) return 0;
     
    552550                return ret != tables->enumTable.end() ? ret->second : tables->base.lookupEnumAtScope( id, scope );
    553551        }
    554 
     552       
    555553        UnionDecl *Indexer::lookupUnionAtScope( const std::string &id, unsigned long scope ) const {
    556554                if ( ! tables ) return 0;
     
    560558                return ret != tables->unionTable.end() ? ret->second : tables->base.lookupUnionAtScope( id, scope );
    561559        }
    562 
     560       
    563561        TraitDecl *Indexer::lookupTraitAtScope( const std::string &id, unsigned long scope ) const {
    564562                if ( ! tables ) return 0;
     
    603601                return true;
    604602        }
    605 
     603       
    606604        void Indexer::addId( DeclarationWithType *decl ) {
    607605                makeWritable();
     
    619617                DeclarationWithType *existing = lookupIdAtScope( name, mangleName, scope );
    620618                if ( ! existing || ! addedIdConflicts( existing, decl ) ) {
    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 ) ) {
     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 ) ) {
    623621                                throw SemanticError( "invalid overload of C function ", decl );
    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
     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 
    626624                          // have their name as their manglename, hence the error can never trigger).
    627                           // The code here is closer to correct, but name mangling would have to be completely
     625                          // The code here is closer to correct, but name mangling would have to be completely 
    628626                          // isomorphic to C type-compatibility, which it may not be.
    629 
     627                       
    630628                        tables->idTable[ name ][ mangleName ] = decl;
    631629                        ++tables->size;
     
    642640                }
    643641        }
    644 
     642       
    645643        void Indexer::addType( NamedTypeDecl *decl ) {
    646644                makeWritable();
     
    673671                addStruct( new StructDecl( id ) );
    674672        }
    675 
     673       
    676674        void Indexer::addStruct( StructDecl *decl ) {
    677675                makeWritable();
     
    691689                }
    692690        }
    693 
     691       
    694692        void Indexer::addEnum( EnumDecl *decl ) {
    695693                makeWritable();
     
    713711                addUnion( new UnionDecl( id ) );
    714712        }
    715 
     713       
    716714        void Indexer::addUnion( UnionDecl *decl ) {
    717715                makeWritable();
     
    731729                }
    732730        }
    733 
     731       
    734732        void Indexer::addTrait( TraitDecl *decl ) {
    735733                makeWritable();
     
    752750        void Indexer::enterScope() {
    753751                ++scope;
    754 
     752               
    755753                if ( doDebug ) {
    756754                        std::cout << "--- Entering scope " << scope << std::endl;
     
    785783            using std::cerr;
    786784
    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 
     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 );
    808797        }
    809798} // namespace SymTab
  • src/SymTab/Indexer.h

    rf80e0218 r1b5c81ed  
    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, unsigned long scope ) const;
     101                bool hasIncompatibleCDecl( const std::string &id, const std::string &mangleName ) 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

    rf80e0218 r1b5c81ed  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:50:04 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed May 11 13:17:52 2016
    13 // Update Count     : 297
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Apr 13 16:39:30 2016
     13// Update Count     : 251
    1414//
    1515
     
    5656#include "MakeLibCfa.h"
    5757#include "TypeEquality.h"
    58 #include "Autogen.h"
    5958#include "ResolvExpr/typeops.h"
    6059
     
    123122
    124123                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
    125155        };
    126156
     
    162192                template<typename AggDecl>
    163193                void addImplicitTypedef( AggDecl * aggDecl );
    164 
     194               
    165195                typedef std::map< std::string, std::pair< TypedefDecl *, int > > TypedefMap;
    166196                TypedefMap typedefNames;
    167197                int scopeLevel;
    168198        };
    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 };
    179199
    180200        class CompoundLiteral : public GenPoly::DeclMutator {
     
    197217                ReturnChecker::checkFunctionReturns( translationUnit );
    198218                mutateAll( translationUnit, compoundliteral );
    199                 autogenerateRoutines( translationUnit );
     219                AutogenerateRoutines::autogenerateRoutines( translationUnit );
    200220                acceptAll( translationUnit, pass3 );
    201                 VerifyCtorDtor::verify( translationUnit );
    202221        }
    203222
     
    209228                type->accept( pass2 );
    210229                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
    211244        }
    212245
     
    279312        void Pass1::visit( EnumDecl *enumDecl ) {
    280313                // Set the type of each member of the enumeration to be EnumConstant
     314
    281315                for ( std::list< Declaration * >::iterator i = enumDecl->get_members().begin(); i != enumDecl->get_members().end(); ++i ) {
    282316                        ObjectDecl * obj = dynamic_cast< ObjectDecl * >( *i );
    283317                        assert( obj );
    284                         obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
     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 ) ;
    285321                } // for
    286322                Parent::visit( enumDecl );
     
    288324
    289325        namespace {
    290                 template< typename DWTList >
    291                 void fixFunctionList( DWTList & dwts, FunctionType * func ) {
     326                template< typename DWTIterator >
     327                void fixFunctionList( DWTIterator begin, DWTIterator end, FunctionType *func ) {
    292328                        // the only case in which "void" is valid is where it is the only one in the list; then it should be removed
    293329                        // entirely other fix ups are handled by the FixFunction class
    294                         typedef typename DWTList::iterator DWTIterator;
    295                         DWTIterator begin( dwts.begin() ), end( dwts.end() );
    296330                        if ( begin == end ) return;
    297331                        FixFunction fixer;
    298332                        DWTIterator i = begin;
    299                         *i = (*i)->acceptMutator( fixer );
     333                        *i = (*i )->acceptMutator( fixer );
    300334                        if ( fixer.get_isVoid() ) {
    301335                                DWTIterator j = i;
    302336                                ++i;
    303                                 dwts.erase( j );
     337                                func->get_parameters().erase( j );
    304338                                if ( i != end ) {
    305339                                        throw SemanticError( "invalid type void in function type ", func );
     
    320354        void Pass1::visit( FunctionType *func ) {
    321355                // Fix up parameters and return types
    322                 fixFunctionList( func->get_parameters(), func );
    323                 fixFunctionList( func->get_returnVals(), func );
     356                fixFunctionList( func->get_parameters().begin(), func->get_parameters().end(), func );
     357                fixFunctionList( func->get_returnVals().begin(), func->get_returnVals().end(), func );
    324358                Visitor::visit( func );
    325359        }
     
    384418
    385419        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 );
    388420                if ( ! structDecl->get_members().empty() ) {
    389421                        ForwardStructsType::iterator fwds = forwardStructs.find( structDecl->get_name() );
     
    395427                        } // if
    396428                } // if
     429                Indexer::visit( structDecl );
    397430        }
    398431
    399432        void Pass2::visit( UnionDecl *unionDecl ) {
    400                 Parent::visit( unionDecl );
    401433                if ( ! unionDecl->get_members().empty() ) {
    402434                        ForwardUnionsType::iterator fwds = forwardUnions.find( unionDecl->get_name() );
     
    408440                        } // if
    409441                } // if
     442                Indexer::visit( unionDecl );
    410443        }
    411444
     
    470503        }
    471504
     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
    472878        void ReturnChecker::checkFunctionReturns( std::list< Declaration * > & translationUnit ) {
    473879                ReturnChecker checker;
     
    483889
    484890        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.
    489891                if ( returnStmt->get_expr() == NULL && returnVals.size() != 0 ) {
    490892                        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 );
    491895                }
    492896        }
     
    6291033                return aggDecl;
    6301034        }
    631 
     1035       
    6321036        template<typename AggDecl>
    6331037        void EliminateTypedef::addImplicitTypedef( AggDecl * aggDecl ) {
     
    6681072        }
    6691073
    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 
    7031074        DeclarationWithType * CompoundLiteral::mutate( ObjectDecl *objectDecl ) {
    7041075                storageclass = objectDecl->get_storageClass();
  • src/SymTab/module.mk

    rf80e0218 r1b5c81ed  
    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 \
    23        SymTab/Autogen.cc
     22       SymTab/TypeEquality.cc
  • src/SynTree/AddressExpr.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Tue Apr 26 12:35:13 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue May 19 16:52:51 2015
    1313// Update Count     : 6
    1414//
     
    3232
    3333void AddressExpr::print( std::ostream &os, int indent ) const {
    34         os << "Address of:" << std::endl;
     34        os << std::string( indent, ' ' ) << "Address of:" << std::endl;
    3535        if ( arg ) {
    36                 os << std::string( indent+2, ' ' );
    37     arg->print( os, indent+2 );
     36                arg->print( os, indent+2 );
    3837        } // if
    3938}
  • src/SynTree/ApplicationExpr.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Tue Apr 26 12:41:06 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 07:54:17 2015
    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 << "Application of" << std::endl << std::string(indent+2, ' ');
     66        os << std::string( indent, ' ' ) << "Application of" << std::endl;
    6767        function->print( os, indent+2 );
    6868        if ( ! args.empty() ) {
  • src/SynTree/ArrayType.cc

    rf80e0218 r1b5c81ed  
    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 : Thu May 12 14:07:16 2016
     12// Last Modified On : Wed Aug 12 14:19:07 2015
    1313// Update Count     : 11
    1414//
     
    5151        if ( dimension ) {
    5252                os << " with dimension of ";
    53                 dimension->print( os, indent );
     53                dimension->print( os, 0 );
    5454        } // if
    5555}
  • src/SynTree/CommaExpr.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Mon May 02 15:19:44 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 08:09:58 2015
    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.
    2522        cloneAll( arg2->get_results(), get_results() );
    26         // for ( Type *& type : get_results() ) {
    27         //      type->set_isLvalue( false );
    28         // }
    2923}
    3024
     
    3933
    4034void CommaExpr::print( std::ostream &os, int indent ) const {
    41         os << "Comma Expression:" << std::endl;
    42         os << std::string( indent+2, ' ' );
     35        os << std::string( indent, ' ' ) << "Comma Expression:" << std::endl;
    4336        arg1->print( os, indent+2 );
    4437        os << std::endl;
    45         os << std::string( indent+2, ' ' );
    4638        arg2->print( os, indent+2 );
    4739        Expression::print( os, indent );
  • src/SynTree/CompoundStmt.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Mon May 02 15:19:17 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jun 23 11:37:49 2015
    1313// Update Count     : 3
    1414//
     
    1818#include <algorithm>
    1919#include <functional>
    20 #include "Expression.h"
    21 #include "Declaration.h"
    2220
    2321using std::string;
    2422using std::endl;
    25 
    26 class VarExprReplacer : public Visitor {
    27 public:
    28   typedef std::map< DeclarationWithType *, DeclarationWithType * > DeclMap;
    29 private:
    30   const DeclMap & declMap;
    31 public:
    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 
    4223
    4324CompoundStmt::CompoundStmt( std::list<Label> labels ) : Statement( labels ) {
     
    4627CompoundStmt::CompoundStmt( const CompoundStmt &other ) : Statement( other ) {
    4728        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   }
    7929}
    8030
     
    8434
    8535void CompoundStmt::print( std::ostream &os, int indent ) const {
    86         os << "CompoundStmt" << endl ;
     36        os << string( indent, ' ' ) << "CompoundStmt" << endl ;
    8737        printAll( kids, os, indent + 2 );
    8838}
  • src/SynTree/Constant.cc

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

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

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Fri May 06 16:26:12 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Mar  2 17:28:11 2016
    1313// Update Count     : 33
    1414//
     
    2222#include "Parser/LinkageSpec.h"
    2323#include "Parser/ParseNode.h"
    24 #include <string>
    2524
    2625class Declaration {
     
    6867        void set_mangleName( std::string newValue ) { mangleName = newValue; }
    6968
    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 
    7569        virtual DeclarationWithType *clone() const = 0;
    7670        virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0;
     
    8175        // this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2
    8276        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;
    8677};
    8778
     
    115106        typedef DeclarationWithType Parent;
    116107  public:
    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 * >() );
     108        FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn );
    118109        FunctionDecl( const FunctionDecl &other );
    119110        virtual ~FunctionDecl();
     
    128119        std::list< std::string >& get_oldIdents() { return oldIdents; }
    129120        std::list< Declaration* >& get_oldDecls() { return oldDecls; }
    130         std::list< Attribute * >& get_attributes() { return attributes; }
    131121
    132122        virtual FunctionDecl *clone() const { return new FunctionDecl( *this ); }
     
    140130        std::list< std::string > oldIdents;
    141131        std::list< Declaration* > oldDecls;
    142         std::list< Attribute * > attributes;
    143132};
    144133
  • src/SynTree/DeclarationWithType.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Mon Apr 11 15:35:27 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jun 13 08:08:07 2015
    1313// Update Count     : 3
    1414//
     
    2323
    2424DeclarationWithType::DeclarationWithType( const DeclarationWithType &other )
    25                 : Declaration( other ), mangleName( other.mangleName ), scopeLevel( other.scopeLevel ) {
     25                : Declaration( other ), mangleName( other.mangleName ) {
    2626}
    2727
  • src/SynTree/Expression.cc

    rf80e0218 r1b5c81ed  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 13 16:03:39 2016
    13 // Update Count     : 42
     12// Last Modified On : Fri Apr  8 17:16:23 2016
     13// Update Count     : 40
    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() ) ), extension( other.extension ) {
     34Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ) {
    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
    6662}
    6763
     
    7672
    7773void ConstantExpr::print( std::ostream &os, int indent ) const {
    78         os << "constant expression " ;
     74        os << std::string( indent, ' ' ) << "constant expression " ;
    7975        constant.print( os );
    8076        Expression::print( os, indent );
     77        os << std::endl;
    8178}
    8279
    8380VariableExpr::VariableExpr( DeclarationWithType *_var, Expression *_aname ) : Expression( _aname ), var( _var ) {
    84         assert( var );
    85         assert( var->get_type() );
    8681        add_result( var->get_type()->clone() );
    8782        for ( std::list< Type* >::iterator i = get_results().begin(); i != get_results().end(); ++i ) {
     
    9893
    9994void VariableExpr::print( std::ostream &os, int indent ) const {
    100         os << "Variable Expression: ";
     95        os << std::string( indent, ' ' ) << "Variable Expression: ";
    10196
    10297        Declaration *decl = get_var();
     
    127122
    128123void SizeofExpr::print( std::ostream &os, int indent) const {
    129         os << "Sizeof Expression on: ";
     124        os << std::string( indent, ' ' ) << "Sizeof Expression on: ";
    130125
    131126        if (isType)
     
    300295
    301296void CastExpr::print( std::ostream &os, int indent ) const {
    302         os << "Cast of:" << std::endl << std::string( indent+2, ' ' );
     297        os << std::string( indent, ' ' ) << "Cast of:" << std::endl;
    303298        arg->print(os, indent+2);
    304299        os << std::endl << std::string( indent, ' ' ) << "to:" << std::endl;
     
    323318
    324319void UntypedMemberExpr::print( std::ostream &os, int indent ) const {
    325         os << "Untyped Member Expression, with field: " << get_member();
     320        os << std::string( indent, ' ' ) << "Member Expression, with field: " << get_member();
    326321
    327322        Expression *agg = get_aggregate();
    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, ' ' );
     323        os << std::string( indent, ' ' ) << "from aggregate: ";
     324        if (agg != 0) agg->print(os, indent + 2);
    334325        Expression::print( os, indent );
    335326}
     
    354345
    355346void MemberExpr::print( std::ostream &os, int indent ) const {
    356         os << "Member Expression, with field: " << std::endl;
     347        os << std::string( indent, ' ' ) << "Member Expression, with field: " << std::endl;
    357348
    358349        assert( member );
     
    363354        Expression *agg = get_aggregate();
    364355        os << std::string( indent, ' ' ) << "from aggregate: " << std::endl;
    365         if (agg != 0) {
    366                 os << std::string( indent + 2, ' ' );
    367                 agg->print(os, indent + 2);
    368         }
    369         os << std::string( indent+2, ' ' );
     356        if (agg != 0) agg->print(os, indent + 2);
    370357        Expression::print( os, indent );
    371358}
     
    385372
    386373void UntypedExpr::print( std::ostream &os, int indent ) const {
    387         os << "Applying untyped: " << std::endl;
    388         os << std::string( indent+2, ' ' );
    389         function->print(os, indent + 2);
     374        os << std::string( indent, ' ' ) << "Applying untyped: " << std::endl;
     375        function->print(os, indent + 4);
    390376        os << std::string( indent, ' ' ) << "...to: " << std::endl;
    391         printAll(args, os, indent + 2);
     377        printArgs(os, indent + 4);
    392378        Expression::print( os, indent );
    393379}
     
    395381void UntypedExpr::printArgs( std::ostream &os, int indent ) const {
    396382        std::list<Expression *>::const_iterator i;
    397         for (i = args.begin(); i != args.end(); i++) {
    398                 os << std::string(indent, ' ' );
     383        for (i = args.begin(); i != args.end(); i++)
    399384                (*i)->print(os, indent);
    400         }
    401385}
    402386
     
    409393
    410394void NameExpr::print( std::ostream &os, int indent ) const {
    411         os << "Name: " << get_name() << std::endl;
     395        os << std::string( indent, ' ' ) << "Name: " << get_name() << std::endl;
    412396        Expression::print( os, indent );
    413397}
     
    470454}
    471455
    472 
    473 ImplicitCopyCtorExpr::ImplicitCopyCtorExpr( ApplicationExpr * callExpr ) : callExpr( callExpr ) {
    474         assert( callExpr );
    475         cloneAll( callExpr->get_results(), results );
    476 }
    477 
    478 ImplicitCopyCtorExpr::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 
    484 ImplicitCopyCtorExpr::~ImplicitCopyCtorExpr() {
    485         delete callExpr;
    486         deleteAll( tempDecls );
    487         deleteAll( returnDecls );
    488         deleteAll( dtors );
    489 }
    490 
    491 void 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 
    502456UntypedValofExpr::UntypedValofExpr( const UntypedValofExpr & other ) : Expression( other ), body ( maybeClone( other.body ) ) {}
    503457
  • src/SynTree/Expression.h

    rf80e0218 r1b5c81ed  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun  8 17:05:30 2016
    13 // Update Count     : 22
     12// Last Modified On : Fri Apr  8 17:18:06 2016
     13// Update Count     : 21
    1414//
    1515
     
    2222#include "Mutator.h"
    2323#include "Constant.h"
    24 #include "Common/UniqueName.h"
    2524
    2625/// Expression is the root type for all expressions
     
    3837        Expression *get_argName() const { return argName; }
    3938        void set_argName( Expression *name ) { argName = name; }
    40         bool get_extension() const { return extension; }
    41         void set_extension( bool exten ) { extension = exten; }
    4239
    4340        virtual Expression *clone() const = 0;
     
    4946        TypeSubstitution *env;
    5047        Expression* argName; // if expression is used as an argument, it can be "designated" by this name
    51         bool extension = false;
    5248};
    5349
     
    563559};
    564560
    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.
    567 class ImplicitCopyCtorExpr : public Expression {
    568 public:
    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 
    596561/// ValofExpr represents a GCC 'lambda expression'
    597562class UntypedValofExpr : public Expression {
  • src/SynTree/FunctionDecl.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Fri May 06 15:59:48 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jul 13 18:11:44 2015
    1313// Update Count     : 19
    1414//
     
    1919#include "Statement.h"
    2020#include "Type.h"
    21 #include "Attribute.h"
    2221#include "Common/utility.h"
    2322
    24 FunctionDecl::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 ) {
     23FunctionDecl::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 ) {
    2625        set_isInline( isInline );
    2726        set_isNoreturn( isNoreturn );
     
    3433FunctionDecl::FunctionDecl( const FunctionDecl &other )
    3534        : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ) {
    36                 cloneAll( other.attributes, attributes );
    3735}
    3836
     
    4038        delete type;
    4139        delete statements;
    42         deleteAll( attributes );
    4340}
    4441
     
    5552        using std::endl;
    5653        using std::string;
    57 
     54       
    5855        if ( get_name() != "" ) {
    5956                os << get_name() << ": ";
     
    6865                os << "_Noreturn ";
    6966        } // if
    70 
    71         printAll( attributes, os, indent );
    72 
    7367        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    7468                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
     
    9387        if ( statements ) {
    9488                os << string( indent + 2, ' ' ) << "with body " << endl;
    95                 os << string( indent + 4, ' ' );
    9689                statements->print( os, indent + 4 );
    9790        } // if
     
    10194        using std::endl;
    10295        using std::string;
    103 
     96       
    10497        if ( get_name() != "" ) {
    10598                os << get_name() << ": ";
     
    111104                os << "_Noreturn ";
    112105        } // if
    113 
    114         // xxx - should printShort print attributes?
    115 
    116106        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    117107                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
  • src/SynTree/Initializer.cc

    rf80e0218 r1b5c81ed  
    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 : Fri May 13 13:23:03 2016
    13 // Update Count     : 28
     12// Last Modified On : Wed Aug 12 14:05:25 2015
     13// Update Count     : 14
    1414//
    1515
    1616#include "Initializer.h"
    1717#include "Expression.h"
    18 #include "Statement.h"
    1918#include "Common/utility.h"
    2019
    21 Initializer::Initializer( bool maybeConstructed ) : maybeConstructed( maybeConstructed ) {}
    22 Initializer::Initializer( const Initializer & other ) : maybeConstructed( other.maybeConstructed ) {
    23 }
    24 
     20Initializer::Initializer() {}
    2521
    2622Initializer::~Initializer() {}
     
    3531void Initializer::print( std::ostream &os, int indent ) {}
    3632
    37 SingleInit::SingleInit( Expression *v, const std::list< Expression *> &_designators, bool maybeConstructed ) : Initializer( maybeConstructed ), value ( v ), designators( _designators ) {
     33SingleInit::SingleInit( Expression *v, std::list< Expression *> &_designators ) : value ( v ), designators( _designators ) {
    3834}
    3935
    40 SingleInit::SingleInit( const SingleInit &other ) : Initializer(other), value ( maybeClone( other.value ) ) {
     36SingleInit::SingleInit( const SingleInit &other ) : value ( other.value ) {
    4137        cloneAll(other.designators, designators );
    4238}
    4339
    44 SingleInit::~SingleInit() {
    45         deleteAll(designators);
    46 }
     40SingleInit::~SingleInit() {}
     41
     42SingleInit *SingleInit::clone() const { return new SingleInit( *this); }
    4743
    4844void SingleInit::print( std::ostream &os, int indent ) {
    4945        os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl;
    50         os << std::string(indent+4, ' ' );
    5146        value->print( os, indent+4 );
    5247
    5348        if ( ! designators.empty() ) {
    54                 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: " << std::endl;
     49                os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "   << std::endl;
    5550                for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) {
    56                         os << std::string(indent + 4, ' ' );
    5751                        ( *i )->print(os, indent + 4 );
    5852                }
     
    6054}
    6155
    62 ListInit::ListInit( const std::list<Initializer*> &_initializers, const std::list<Expression *> &_designators, bool maybeConstructed )
    63         : Initializer( maybeConstructed ), initializers( _initializers ), designators( _designators ) {
     56ListInit::ListInit( std::list<Initializer*> &_initializers, std::list<Expression *> &_designators )
     57        : initializers( _initializers ), designators( _designators ) {
    6458}
    6559
    66 ListInit::~ListInit() {
    67         deleteAll( initializers );
    68         deleteAll( designators );
     60ListInit::~ListInit() {}
     61
     62ListInit *ListInit::clone() const {
     63        return new ListInit( *this );
    6964}
    7065
    7166void ListInit::print( std::ostream &os, int indent ) {
    72         os << std::endl << std::string(indent, ' ') << "Compound initializer:  ";
     67        os << std::endl << std::string(indent, ' ') << "Compound initializer:  "; 
    7368        if ( ! designators.empty() ) {
    7469                os << std::string(indent + 2, ' ' ) << "designated by: [";
    7570                for ( std::list < Expression * >::iterator i = designators.begin();
    7671                          i != designators.end(); i++ ) {
    77                         ( *i )->print(os, indent + 4 );
     72                        ( *i )->print(os, indent + 4 ); 
    7873                } // for
    79 
     74       
    8075                os << std::string(indent + 2, ' ' ) << "]";
    8176        } // if
    8277
    83         for ( std::list<Initializer *>::iterator i = initializers.begin(); i != initializers.end(); i++ )
     78        for ( std::list<Initializer *>::iterator i = initializers.begin(); i != initializers.end(); i++ ) 
    8479                (*i)->print( os, indent + 2 );
    8580}
    86 
    87 
    88 ConstructorInit::ConstructorInit( Statement * ctor, Statement * dtor, Initializer * init ) : Initializer( true ), ctor( ctor ), dtor( dtor ), init( init ) {}
    89 ConstructorInit::ConstructorInit( const ConstructorInit &other ) : Initializer( other ), ctor( maybeClone( other.ctor ) ), dtor( maybeClone( other.dtor ) ), init( maybeClone( other.init ) ) {
    90 }
    91 
    92 ConstructorInit::~ConstructorInit() {
    93         delete ctor;
    94         delete dtor;
    95         delete init;
    96 }
    97 
    98 void 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 
    119 std::ostream & operator<<( std::ostream & out, Initializer * init ) {
    120         init->print( out );
    121         return out;
    122 }
    123 
    12481// Local Variables: //
    12582// tab-width: 4 //
  • src/SynTree/Initializer.h

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Tue Apr 12 13:49:13 2016
    13 // Update Count     : 19
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 09:03:48 2015
     13// Update Count     : 1
    1414//
    1515
     
    2020#include "Visitor.h"
    2121#include "Mutator.h"
    22 #include "Type.h"
    2322
    2423#include <cassert>
     
    2827  public:
    2928        //      Initializer( std::string _name = std::string(""), int _pos = 0 );
    30         Initializer( bool maybeConstructed );
    31         Initializer( const Initializer & other );
     29        Initializer( );
    3230        virtual ~Initializer();
    3331
     
    4543        }
    4644
    47         bool get_maybeConstructed() { return maybeConstructed; }
    48 
    4945        virtual Initializer *clone() const = 0;
    5046        virtual void accept( Visitor &v ) = 0;
     
    5450        //      std::string name;
    5551        //      int pos;
    56         bool maybeConstructed;
    5752};
    5853
     
    6055class SingleInit : public Initializer {
    6156  public:
    62         SingleInit( Expression *value, const std::list< Expression *> &designators = std::list< Expression * >(), bool maybeConstructed = false );
     57        SingleInit( Expression *value, std::list< Expression *> &designators = *(new std::list<Expression *>()) );
    6358        SingleInit( const SingleInit &other );
    6459        virtual ~SingleInit();
    65 
     60       
    6661        Expression *get_value() { return value; }
    6762        void set_value( Expression *newValue ) { value = newValue; }
     
    7065        std::list<Expression *> &get_designators() { return designators; }
    7166
    72         virtual SingleInit *clone() const { return new SingleInit( *this); }
     67        virtual SingleInit *clone() const;
    7368        virtual void accept( Visitor &v ) { v.visit( this ); }
    7469        virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     
    8479class ListInit : public Initializer {
    8580  public:
    86         ListInit( const std::list<Initializer*> &initializers,
    87                           const std::list<Expression *> &designators = std::list< Expression * >(), bool maybeConstructed = false );
     81        ListInit( std::list<Initializer*> &,
     82                          std::list<Expression *> &designators = *(new std::list<Expression *>()) );
    8883        virtual ~ListInit();
    8984
     
    9691        std::list<Initializer*>::iterator end_initializers() { return initializers.end(); }
    9792
    98         virtual ListInit *clone() const { return new ListInit( *this ); }
     93        virtual ListInit *clone() const;
    9994        virtual void accept( Visitor &v ) { v.visit( this ); }
    10095        virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     
    105100};
    106101
    107 // ConstructorInit represents an initializer that is either a constructor expression or
    108 // a C-style initializer.
    109 class 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 
    135 std::ostream & operator<<( std::ostream & out, Initializer * init );
    136 
    137102#endif // INITIALIZER_H
    138103
  • src/SynTree/Mutator.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Wed Apr 27 17:07:29 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Apr  1 18:05:16 2016
    1313// Update Count     : 16
    1414//
     
    182182}
    183183
    184 Statement *Mutator::mutate( ImplicitCtorDtorStmt *impCtorDtorStmt ) {
    185         impCtorDtorStmt->set_callStmt( maybeMutate( impCtorDtorStmt->get_callStmt(), *this ) );
    186         return impCtorDtorStmt;
    187 }
    188 
    189184Expression *Mutator::mutate( ApplicationExpr *applicationExpr ) {
    190185        mutateAll( applicationExpr->get_results(), *this );
     
    340335        asmExpr->set_operand( maybeMutate( asmExpr->get_operand(), *this ) );
    341336        return asmExpr;
    342 }
    343 
    344 Expression* 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;
    349337}
    350338
     
    462450}
    463451
    464 Initializer *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 
    470452Subrange *Mutator::mutate( Subrange *subrange ) {
    471453        return subrange;
  • src/SynTree/Mutator.h

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Thu Apr 14 15:32:00 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Apr  1 17:26:56 2016
    1313// Update Count     : 10
    1414//
     
    5252        virtual NullStmt* mutate( NullStmt *nullStmt );
    5353        virtual Statement* mutate( DeclStmt *declStmt );
    54         virtual Statement* mutate( ImplicitCtorDtorStmt *impCtorDtorStmt );
    5554
    5655        virtual Expression* mutate( ApplicationExpr *applicationExpr );
     
    6362        virtual Expression* mutate( MemberExpr *memberExpr );
    6463        virtual Expression* mutate( VariableExpr *variableExpr );
    65         virtual Expression* mutate( ConstantExpr *constantExpr );
     64        virtual Expression* mutate( ConstantExpr *constantExpr ); 
    6665        virtual Expression* mutate( SizeofExpr *sizeofExpr );
    6766        virtual Expression* mutate( AlignofExpr *alignofExpr );
     
    7776        virtual Expression* mutate( TypeExpr *typeExpr );
    7877        virtual Expression* mutate( AsmExpr *asmExpr );
    79         virtual Expression* mutate( ImplicitCopyCtorExpr *impCpCtorExpr );
    8078        virtual Expression* mutate( UntypedValofExpr *valofExpr );
    8179        virtual Expression* mutate( CompoundLiteralExpr *compLitExpr );
     
    9896        virtual Initializer* mutate( SingleInit *singleInit );
    9997        virtual Initializer* mutate( ListInit *listInit );
    100         virtual Initializer* mutate( ConstructorInit *ctorInit );
    10198
    10299        virtual Subrange *mutate( Subrange *subrange );
  • src/SynTree/ObjectDecl.cc

    rf80e0218 r1b5c81ed  
    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 : Fri May 13 13:23:32 2016
    13 // Update Count     : 30
     12// Last Modified On : Tue Sep 29 14:13:01 2015
     13// Update Count     : 18
    1414//
    1515
     
    1919#include "Expression.h"
    2020#include "Common/utility.h"
    21 #include "Statement.h"
    2221
    2322ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, bool isInline, bool isNoreturn )
     
    5958                os << " with initializer ";
    6059                init->print( os, indent );
    61                 os << std::endl << std::string(indent, ' ');
    62                 os << "maybeConstructed? " << init->get_maybeConstructed();
    6360        } // if
    6461
    6562        if ( bitfieldWidth ) {
    66                 os << std::string(indent, ' ');
    6763                os << " with bitfield width ";
    6864                bitfieldWidth->print( os );
     
    7369#if 0
    7470        if ( get_mangleName() != "") {
    75                 os << get_mangleName() << ": ";
    76         } else
     71                os << get_mangleName() << ": "; 
     72        } else 
    7773#endif
    7874        if ( get_name() != "" ) {
  • src/SynTree/Statement.cc

    rf80e0218 r1b5c81ed  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu May 12 13:33:18 2016
     12// Last Modified On : Wed Dec 09 14:09:34 2015
    1313// Update Count     : 54
    1414//
     
    4343
    4444void ExprStmt::print( std::ostream &os, int indent ) const {
    45         os << "Expression Statement:" << endl << std::string( indent + 2, ' ' );
     45        os << string( indent, ' ' ) << "Expression Statement:" << endl;
    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.empty() )
     89        if ( type == BranchStmt::Goto && target.size() == 0 )
    9090                throw SemanticError("goto without target");
    9191}
     
    110110
    111111void ReturnStmt::print( std::ostream &os, int indent ) const {
    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         }
     112        os << std::string( indent, ' ' ) << string ( isThrow? "Throw":"Return" ) << " Statement, returning: ";
     113        if ( expr != 0 ) expr->print( os );
    117114        os << endl;
    118115}
     
    127124
    128125void IfStmt::print( std::ostream &os, int indent ) const {
    129         os << "If on condition: " << endl ;
    130         os << string( indent+4, ' ' );
     126        os << string( indent, ' ' ) << "If on condition: " << endl ;
    131127        condition->print( os, indent + 4 );
    132128
    133         os << string( indent+2, ' ' ) << "... then: " << endl;
    134 
    135         os << string( indent+4, ' ' );
     129        os << string( indent, ' ' ) << ".... and branches: " << endl;
     130
    136131        thenPart->print( os, indent + 4 );
    137132
    138133        if ( elsePart != 0 ) {
    139                 os << string( indent+2, ' ' ) << "... else: " << endl;
    140                 os << string( indent+4, ' ' );
    141134                elsePart->print( os, indent + 4 );
    142135        } // if
     
    160153
    161154void SwitchStmt::print( std::ostream &os, int indent ) const {
    162         os << "Switch on condition: ";
     155        os << string( indent, ' ' ) << "Switch on condition: ";
    163156        condition->print( os );
    164157        os << endl;
     
    225218
    226219void ChooseStmt::print( std::ostream &os, int indent ) const {
    227         os << "Choose on condition: ";
     220        os << string( indent, ' ' ) << "Choose on condition: ";
    228221        condition->print( os );
    229222        os << endl;
     
    254247
    255248void WhileStmt::print( std::ostream &os, int indent ) const {
    256         os << "While on condition: " << endl ;
     249        os << string( indent, ' ' ) << "While on condition: " << endl ;
    257250        condition->print( os, indent + 4 );
    258251
     
    280273
    281274void ForStmt::print( std::ostream &os, int indent ) const {
    282         os << "Labels: {";
     275        os << string( indent, ' ' ) << "Labels: {";
    283276        for ( std::list<Label>::const_iterator it = get_labels().begin(); it != get_labels().end(); ++it) {
    284277                os << *it << ",";
     
    290283        os << string( indent + 2, ' ' ) << "initialization: \n";
    291284        for ( std::list<Statement *>::const_iterator it = initialization.begin(); it != initialization.end(); ++it ) {
    292                 os << string( indent + 4, ' ' );
    293285                (*it)->print( os, indent + 4 );
    294286        }
    295287
    296288        os << "\n" << string( indent + 2, ' ' ) << "condition: \n";
    297         if ( condition != 0 ) {
    298                 os << string( indent + 4, ' ' );
     289        if ( condition != 0 )
    299290                condition->print( os, indent + 4 );
    300         }
    301291
    302292        os << "\n" << string( indent + 2, ' ' ) << "increment: \n";
    303         if ( increment != 0 ) {
    304                 os << string( indent + 4, ' ' );
     293        if ( increment != 0 )
    305294                increment->print( os, indent + 4 );
    306         }
    307295
    308296        os << "\n" << string( indent + 2, ' ' ) << "statement block: \n";
    309         if ( body != 0 ) {
    310                 os << string( indent + 4, ' ' );
     297        if ( body != 0 )
    311298                body->print( os, indent + 4 );
    312         }
    313299
    314300        os << endl;
     
    328314
    329315void TryStmt::print( std::ostream &os, int indent ) const {
    330         os << "Try Statement" << endl;
     316        os << string( indent, ' ' ) << "Try Statement" << endl;
    331317        os << string( indent + 2, ' ' ) << "with block: " << endl;
    332318        block->print( os, indent + 4 );
     
    358344
    359345void CatchStmt::print( std::ostream &os, int indent ) const {
    360         os << "Catch Statement" << endl;
     346        os << string( indent, ' ' ) << "Catch Statement" << endl;
    361347
    362348        os << string( indent, ' ' ) << "... catching" << endl;
     
    383369
    384370void FinallyStmt::print( std::ostream &os, int indent ) const {
    385         os << "Finally Statement" << endl;
     371        os << string( indent, ' ' ) << "Finally Statement" << endl;
    386372        os << string( indent + 2, ' ' ) << "with block: " << endl;
    387373        block->print( os, indent + 4 );
     
    392378
    393379void NullStmt::print( std::ostream &os, int indent ) const {
    394         os << "Null Statement" << endl ;
    395 }
    396 
    397 ImplicitCtorDtorStmt::ImplicitCtorDtorStmt( Statement * callStmt ) : Statement( std::list<Label>() ), callStmt( callStmt ) {
    398         assert( callStmt );
    399 }
    400 
    401 ImplicitCtorDtorStmt::ImplicitCtorDtorStmt( const ImplicitCtorDtorStmt & other ) : Statement( other ), callStmt( maybeClone( other.callStmt ) ) {
    402 }
    403 
    404 ImplicitCtorDtorStmt::~ImplicitCtorDtorStmt() {
    405         delete callStmt;
    406 }
    407 
    408 void 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;
     380        os << string( indent, ' ' ) << "Null Statement" << endl ;
    413381}
    414382
  • src/SynTree/Statement.h

    rf80e0218 r1b5c81ed  
    2121#include "Mutator.h"
    2222#include "Common/SemanticError.h"
    23 #include "Type.h"
    24 #include "Label.h"
    2523
    2624class Statement {
     
    396394        virtual ~DeclStmt();
    397395
    398         Declaration *get_decl() const { return decl; }
     396        Declaration *get_decl() { return decl; }
    399397        void set_decl( Declaration *newValue ) { decl = newValue; }
    400398
     
    406404        Declaration *decl;
    407405};
    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.
    413 class 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 
    432406
    433407std::ostream & operator<<( std::ostream & out, Statement * statement );
  • src/SynTree/SynTree.h

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Thu Apr 14 15:31:36 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Apr  1 16:47:44 2016
    1313// Update Count     : 5
    1414//
     
    5656class DeclStmt;
    5757class NullStmt;
    58 class ImplicitCtorDtorStmt;
    5958
    6059class Expression;
     
    8281class TypeExpr;
    8382class AsmExpr;
    84 class ImplicitCopyCtorExpr;
    8583class UntypedValofExpr;
    8684class CompoundLiteralExpr;
     
    106104class SingleInit;
    107105class ListInit;
    108 class ConstructorInit;
    109106
    110107class Subrange;
     
    113110class Constant;
    114111
    115 // typedef std::string Label;
    116 class Label;
     112typedef std::string Label;
    117113typedef unsigned int UniqueId;
    118114
    119115class TypeSubstitution;
    120 
    121 // gcc attribute
    122 class Attribute;
    123116
    124117#endif // SYNTREE_H
  • src/SynTree/Type.cc

    rf80e0218 r1b5c81ed  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Type.cc --
     7// Type.cc -- 
    88//
    99// Author           : Richard C. Bilson
     
    5454}
    5555
    56 void 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 
    7756void Type::print( std::ostream &os, int indent ) const {
    7857        if ( ! forall.empty() ) {
     
    8160                os << std::string( indent+2, ' ' );
    8261        } // if
    83         tq.print( os, indent );
     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
    8480}
    8581
  • src/SynTree/Type.h

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

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Tue Apr 26 11:15:29 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Mar  2 17:29:15 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
    9474        if ( i == typeEnv.end() ) {
    9575                return 0;
     
    9777                return i->second;
    9878        } // if
    99 #endif
    10079}
    10180
     
    11796        BoundVarsType::const_iterator bound = boundVars.find( inst->get_name() );
    11897        if ( bound != boundVars.end() ) return inst;
    119 
     98       
    12099        TypeEnvType::const_iterator i = typeEnv.find( inst->get_name() );
    121100        if ( i == typeEnv.end() ) {
     
    238217}
    239218
    240 std::ostream & operator<<( std::ostream & out, const TypeSubstitution & sub ) {
    241         sub.print( out );
    242         return out;
    243 }
    244 
    245 
    246219// Local Variables: //
    247220// tab-width: 4 //
  • src/SynTree/TypeSubstitution.h

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Fri Apr 29 15:00:20 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Mar  2 17:33:19 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 
    50         /// this function is unused...
     49       
    5150        template< typename TypeInstListIterator >
    5251        void extract( TypeInstListIterator begin, TypeInstListIterator end, TypeSubstitution &result );
    53 
     52       
    5453        void normalize();
    5554
     
    6463        /// Records type variable bindings from forall-statements and instantiations of generic types
    6564        template< typename TypeClass > Type *handleAggregateType( TypeClass *type );
    66 
     65       
    6766        virtual Type* mutate(VoidType *basicType);
    6867        virtual Type* mutate(BasicType *basicType);
     
    7675        virtual Type* mutate(TupleType *tupleType);
    7776        virtual Type* mutate(VarArgsType *varArgsType);
    78 
     77       
    7978        // TODO: worry about traversing into a forall-qualified function type or type decl with assertions
    80 
     79       
    8180        void initialize( const TypeSubstitution &src, TypeSubstitution &dest );
    8281
     
    137136        return subCount;
    138137}
    139 
     138       
    140139template< typename SynTreeClass >
    141140int TypeSubstitution::applyFree( SynTreeClass *&input ) {
     
    150149        return subCount;
    151150}
    152 
     151       
    153152template< typename TypeInstListIterator >
    154153void TypeSubstitution::extract( TypeInstListIterator begin, TypeInstListIterator end, TypeSubstitution &result ) {
    155         // xxx - this function doesn't extract varEnv - is this intentional?
    156154        while ( begin != end ) {
    157155                TypeEnvType::iterator cur = typeEnv.find( (*begin++)->get_name() );
     
    175173}
    176174
    177 std::ostream & operator<<( std::ostream & out, const TypeSubstitution & sub );
    178 
    179175#endif // TYPESUBSTITUTION_H
    180176
  • src/SynTree/Visitor.cc

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Wed Apr 27 17:07:40 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Apr  1 18:05:13 2016
    1313// Update Count     : 18
    1414//
     
    3939}
    4040
    41 void Visitor::handleAggregateDecl( AggregateDecl *aggregateDecl ) {
     41void Visitor::visit( AggregateDecl *aggregateDecl ) {
    4242        acceptAll( aggregateDecl->get_parameters(), *this );
    4343        acceptAll( aggregateDecl->get_members(), *this );
     
    4545
    4646void Visitor::visit( StructDecl *aggregateDecl ) {
    47         handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
     47        visit( static_cast< AggregateDecl* >( aggregateDecl ) );
    4848}
    4949
    5050void Visitor::visit( UnionDecl *aggregateDecl ) {
    51         handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
     51        visit( static_cast< AggregateDecl* >( aggregateDecl ) );
    5252}
    5353
    5454void Visitor::visit( EnumDecl *aggregateDecl ) {
    55         handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
     55        visit( static_cast< AggregateDecl* >( aggregateDecl ) );
    5656}
    5757
    5858void Visitor::visit( TraitDecl *aggregateDecl ) {
    59         handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
    60 }
    61 
    62 void Visitor::handleNamedTypeDecl( NamedTypeDecl *typeDecl ) {
     59        visit( static_cast< AggregateDecl* >( aggregateDecl ) );
     60}
     61
     62void Visitor::visit( NamedTypeDecl *typeDecl ) {
    6363        acceptAll( typeDecl->get_parameters(), *this );
    6464        acceptAll( typeDecl->get_assertions(), *this );
     
    6767
    6868void Visitor::visit( TypeDecl *typeDecl ) {
    69         handleNamedTypeDecl( static_cast< NamedTypeDecl* >( typeDecl ) );
     69        visit( static_cast< NamedTypeDecl* >( typeDecl ) );
    7070}
    7171
    7272void Visitor::visit( TypedefDecl *typeDecl ) {
    73         handleNamedTypeDecl( static_cast< NamedTypeDecl* >( typeDecl ) );
     73        visit( static_cast< NamedTypeDecl* >( typeDecl ) );
    7474}
    7575
     
    150150void Visitor::visit( DeclStmt *declStmt ) {
    151151        maybeAccept( declStmt->get_decl(), *this );
    152 }
    153 
    154 void Visitor::visit( ImplicitCtorDtorStmt *impCtorDtorStmt ) {
    155         maybeAccept( impCtorDtorStmt->get_callStmt(), *this );
    156152}
    157153
     
    288284}
    289285
    290 void Visitor::visit( ImplicitCopyCtorExpr *impCpCtorExpr ) {
    291         maybeAccept( impCpCtorExpr->get_callExpr(), *this );
    292         acceptAll( impCpCtorExpr->get_tempDecls(), *this );
    293         acceptAll( impCpCtorExpr->get_returnDecls(), *this );
    294 }
    295 
    296286void Visitor::visit( UntypedValofExpr *valofExpr ) {
    297287        acceptAll( valofExpr->get_results(), *this );
     
    330320}
    331321
    332 void Visitor::handleReferenceToType( ReferenceToType *aggregateUseType ) {
     322void Visitor::visit( ReferenceToType *aggregateUseType ) {
    333323        acceptAll( aggregateUseType->get_forall(), *this );
    334324        acceptAll( aggregateUseType->get_parameters(), *this );
     
    336326
    337327void Visitor::visit( StructInstType *aggregateUseType ) {
    338         handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
     328        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    339329}
    340330
    341331void Visitor::visit( UnionInstType *aggregateUseType ) {
    342         handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
     332        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    343333}
    344334
    345335void Visitor::visit( EnumInstType *aggregateUseType ) {
    346         handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
     336        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    347337}
    348338
    349339void Visitor::visit( TraitInstType *aggregateUseType ) {
    350         handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
     340        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    351341        acceptAll( aggregateUseType->get_members(), *this );
    352342}
    353343
    354344void Visitor::visit( TypeInstType *aggregateUseType ) {
    355         handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
     345        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    356346}
    357347
     
    389379}
    390380
    391 void Visitor::visit( ConstructorInit *ctorInit ) {
    392         maybeAccept( ctorInit->get_ctor(), *this );
    393         maybeAccept( ctorInit->get_init(), *this );
    394 }
    395 
    396381void Visitor::visit( Subrange *subrange ) {}
    397382
  • src/SynTree/Visitor.h

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Thu Apr 14 15:30:58 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Apr  1 17:26:55 2016
    1313// Update Count     : 7
    1414//
     
    5252        virtual void visit( NullStmt *nullStmt );
    5353        virtual void visit( DeclStmt *declStmt );
    54         virtual void visit( ImplicitCtorDtorStmt *impCtorDtorStmt );
    5554
    5655        virtual void visit( ApplicationExpr *applicationExpr );
     
    6362        virtual void visit( MemberExpr *memberExpr );
    6463        virtual void visit( VariableExpr *variableExpr );
    65         virtual void visit( ConstantExpr *constantExpr );
     64        virtual void visit( ConstantExpr *constantExpr ); 
    6665        virtual void visit( SizeofExpr *sizeofExpr );
    6766        virtual void visit( AlignofExpr *alignofExpr );
     
    7776        virtual void visit( TypeExpr *typeExpr );
    7877        virtual void visit( AsmExpr *asmExpr );
    79         virtual void visit( ImplicitCopyCtorExpr *impCpCtorExpr );
    8078        virtual void visit( UntypedValofExpr *valofExpr );
    8179        virtual void visit( CompoundLiteralExpr *compLitExpr );
     
    9896        virtual void visit( SingleInit *singleInit );
    9997        virtual void visit( ListInit *listInit );
    100         virtual void visit( ConstructorInit *ctorInit );
    10198
    10299        virtual void visit( Subrange *subrange );
     
    104101        virtual void visit( Constant *constant );
    105102  private:
    106         virtual void handleAggregateDecl( AggregateDecl *aggregateDecl );
    107         virtual void handleNamedTypeDecl( NamedTypeDecl *typeDecl );
    108         virtual void handleReferenceToType( ReferenceToType *aggregateUseType );
     103        virtual void visit( AggregateDecl *aggregateDecl );
     104        virtual void visit( NamedTypeDecl *typeDecl );
     105        virtual void visit( ReferenceToType *aggregateUseType );
    109106};
    110107
  • src/SynTree/module.mk

    rf80e0218 r1b5c81ed  
    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/AddStmtVisitor.cc \
    49        SynTree/TypeSubstitution.cc \
    50        SynTree/Attribute.cc
     48       SynTree/TypeSubstitution.cc
    5149
  • src/driver/Makefile.in

    rf80e0218 r1b5c81ed  
    6262CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    6363        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
    64 AM_V_CXX = $(am__v_CXX_@AM_V@)
    65 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
    66 am__v_CXX_0 = @echo "  CXX   " $@;
    67 AM_V_at = $(am__v_at_@AM_V@)
    68 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    69 am__v_at_0 = @
    7064CXXLD = $(CXX)
    7165CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    7266        -o $@
    73 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    74 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
    75 am__v_CXXLD_0 = @echo "  CXXLD " $@;
    76 AM_V_GEN = $(am__v_GEN_@AM_V@)
    77 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    78 am__v_GEN_0 = @echo "  GEN   " $@;
    7967SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
    8068DIST_SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
     
    8573ALLOCA = @ALLOCA@
    8674AMTAR = @AMTAR@
    87 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    8875AUTOCONF = @AUTOCONF@
    8976AUTOHEADER = @AUTOHEADER@
     
    9380CC = @CC@
    9481CCDEPMODE = @CCDEPMODE@
    95 CFA_BACKEND_CC = @CFA_BACKEND_CC@
    9682CFA_BINDIR = @CFA_BINDIR@
    9783CFA_INCDIR = @CFA_INCDIR@
     
    11298EGREP = @EGREP@
    11399EXEEXT = @EXEEXT@
     100GCC_PATH = @GCC_PATH@
    114101GREP = @GREP@
    115102INSTALL = @INSTALL@
     
    306293cc1$(EXEEXT): $(cc1_OBJECTS) $(cc1_DEPENDENCIES) $(EXTRA_cc1_DEPENDENCIES)
    307294        @rm -f cc1$(EXEEXT)
    308         $(AM_V_CXXLD)$(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
     295        $(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
    309296cfa$(EXEEXT): $(cfa_OBJECTS) $(cfa_DEPENDENCIES) $(EXTRA_cfa_DEPENDENCIES)
    310297        @rm -f cfa$(EXEEXT)
    311         $(AM_V_CXXLD)$(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
     298        $(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
    312299
    313300mostlyclean-compile:
     
    321308
    322309.cc.o:
    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@
     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@
    326313@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    327 @am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
     314@am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ $<
    328315
    329316.cc.obj:
    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@
     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@
    333320@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    334 @am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     321@am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    335322
    336323ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  • src/driver/cc1.cc

    rf80e0218 r1b5c81ed  
    1010// Created On       : Fri Aug 26 14:23:51 2005
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 10 09:27:37 2016
    13 // Update Count     : 80
     12// Last Modified On : Mon Jan 25 16:05:15 2016
     13// Update Count     : 56
    1414//
    1515
     
    3030
    3131
    32 string compiler_name( CFA_BACKEND_CC );                                 // path/name of C compiler
     32string compiler_name( GCC_PATH );                                               // 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 *cargs[20];                                                          // leave space for 20 additional cfa-cpp command line values
    111         int ncargs = 1;                                                                         // 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
    112112
    113113        signal( SIGINT,  sigTermHandler );
    114114        signal( SIGTERM, sigTermHandler );
    115 
    116 #ifdef __DEBUG_H__
    117         cerr << "Stage1" << endl;
    118 #endif // __DEBUG_H__
    119115
    120116        // process all the arguments
     
    151147                                i += 1;                                                                 // and the argument
    152148                                cpp_flag = true;
    153                         } else if ( arg == "-D__CFA_PREPROCESS__" ) {
     149                        } else if ( arg == "-D__CFA__" ) {
    154150                                CFA_flag = true;
    155                         } else if ( arg == "-D" && string( argv[i + 1] ) == "__CFA_PREPROCESS__" ) {
     151                        } else if ( arg == "-D" && string( argv[i + 1] ) == "__CFA__" ) {
    156152                                i += 1;                                                                 // and the argument
    157153                                CFA_flag = true;
    158154                        } else if ( prefix( arg, D__CFA_FLAGPREFIX__ ) ) {
    159                                 cargs[ncargs] = ( *new string( arg.substr( D__CFA_FLAGPREFIX__.size() ) ) ).c_str();
    160                                 ncargs += 1;
     155                                uargs[nuargs] = ( *new string( arg.substr( D__CFA_FLAGPREFIX__.size() ) ) ).c_str();
     156                                nuargs += 1;
    161157                        } else if ( arg == "-D" && prefix( argv[i + 1], D__CFA_FLAGPREFIX__.substr(2) ) ) {
    162                                 cargs[ncargs] = ( *new string( string( argv[i + 1] ).substr( D__CFA_FLAGPREFIX__.size() - 2 ) ) ).c_str();
    163                                 ncargs += 1;
     158                                uargs[nuargs] = ( *new string( string( argv[i + 1] ).substr( D__CFA_FLAGPREFIX__.size() - 2 ) ) ).c_str();
     159                                nuargs += 1;
    164160                                i += 1;                                                                 // and the argument
    165161                        } else if ( prefix( arg, D__GCC_BPREFIX__ ) ) {
     
    321317
    322318        if ( fork() == 0 ) {                                                            // child runs CFA
    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;
     319                uargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
     320
     321                uargs[nuargs] = tmpname;
     322                nuargs += 1;
    333323                if ( o_name != NULL ) {
    334                         cargs[ncargs] = o_name;
    335                         ncargs += 1;
     324                        uargs[nuargs] = o_name;
     325                        nuargs += 1;
    336326                } else if ( ! CFA_flag ) {                                              // run cfa-cpp ?
    337                         cargs[ncargs] = cpp_out;
    338                         ncargs += 1;
     327                        uargs[nuargs] = cpp_out;
     328                        nuargs += 1;
    339329                } // if
    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] << " ";
     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] << " ";
    346336                } // for
    347337                cerr << endl;
    348338#endif // __DEBUG_H__
    349339
    350                 execvp( cargs[0], (char * const *)cargs );              // should not return
     340                execvp( uargs[0], (char * const *)uargs );              // should not return
    351341                perror( "CFA Translator error: cpp level, execvp" );
    352342                exit( EXIT_FAILURE );
     
    380370        const char *args[argc + 100];                                           // leave space for 100 additional cfa command line values
    381371        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__
    386372
    387373        // process all the arguments
     
    481467
    482468        if ( arg == "-E" ) {
     469#ifdef __DEBUG_H__
     470                cerr << "Stage1" << endl;
     471#endif // __DEBUG_H__
    483472                Stage1( argc, argv );
    484473        } else if ( arg == "-fpreprocessed" ) {
     474#ifdef __DEBUG_H__
     475                cerr << "Stage2" << endl;
     476#endif // __DEBUG_H__
    485477                Stage2( argc, argv );
    486478        } else {
  • src/driver/cfa.cc

    rf80e0218 r1b5c81ed  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 10 09:26:19 2016
    13 // Update Count     : 138
     12// Last Modified On : Wed Apr  6 14:04:22 2016
     13// Update Count     : 132
    1414//
    1515
     
    7575        string langstd;                                                                         // language standard
    7676
    77         string compiler_path( CFA_BACKEND_CC );                         // path/name of C compiler
     77        string compiler_path( GCC_PATH );                                       // 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__CFA__";
    266         nargs += 1;
    267         args[nargs] = "-D__CFORALL__";
     265        args[nargs] = "-D__CFORALL__=1";
    268266        nargs += 1;
    269267
     
    274272
    275273        if ( CFA_flag ) {
    276                 args[nargs] = "-D__CFA_PREPROCESS_";
     274                args[nargs] = "-D__CFA__";
    277275                nargs += 1;
    278276        } // if
     
    312310                        nargs += 1;
    313311                } // if
    314                 args[nargs] = "-fgnu89-inline";
    315                 nargs += 1;
    316312                args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
    317313                nargs += 1;
     
    319315                nargs += 1;
    320316        } else {
    321                 cerr << argv[0] << " error, compiler \"" << compiler_name << "\" unsupported." << endl;
     317                cerr << argv[0] << " error, compiler " << compiler_name << " not supported." << endl;
    322318                exit( EXIT_FAILURE );
    323319        } // if
  • src/examples/Makefile.am

    rf80e0218 r1b5c81ed  
    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 avl_test # build but do not install
     21noinst_PROGRAMS = fstream_test vector_test # build but do not install
    2222fstream_test_SOURCES = fstream_test.c
    2323vector_test_SOURCES = vector_int.c array.c vector_test.c
    24 avl_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

    rf80e0218 r1b5c81ed  
    3636PRE_UNINSTALL = :
    3737POST_UNINSTALL = :
    38 noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
    39         avl_test$(EXEEXT)
     38noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT)
    4039subdir = src/examples
    4140DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
     
    4948CONFIG_CLEAN_VPATH_FILES =
    5049PROGRAMS = $(noinst_PROGRAMS)
    51 am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \
    52         avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \
    53         avl-private.$(OBJEXT)
    54 avl_test_OBJECTS = $(am_avl_test_OBJECTS)
    55 avl_test_LDADD = $(LDADD)
    5650am_fstream_test_OBJECTS = fstream_test.$(OBJEXT)
    5751fstream_test_OBJECTS = $(am_fstream_test_OBJECTS)
     
    6559am__depfiles_maybe = depfiles
    6660am__mv = mv -f
    67 AM_V_lt = $(am__v_lt_@AM_V@)
    68 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
    69 am__v_lt_0 = --silent
    7061COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    7162        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    72 AM_V_CC = $(am__v_CC_@AM_V@)
    73 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    74 am__v_CC_0 = @echo "  CC    " $@;
    75 AM_V_at = $(am__v_at_@AM_V@)
    76 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    77 am__v_at_0 = @
    7863CCLD = $(CC)
    7964LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    80 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    81 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    82 am__v_CCLD_0 = @echo "  CCLD  " $@;
    83 AM_V_GEN = $(am__v_GEN_@AM_V@)
    84 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    85 am__v_GEN_0 = @echo "  GEN   " $@;
    86 SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    87         $(vector_test_SOURCES)
    88 DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    89         $(vector_test_SOURCES)
     65SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
     66DIST_SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
    9067ETAGS = etags
    9168CTAGS = ctags
     
    9471ALLOCA = @ALLOCA@
    9572AMTAR = @AMTAR@
    96 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    9773AUTOCONF = @AUTOCONF@
    9874AUTOHEADER = @AUTOHEADER@
     
    10278CC = @CFA_BINDIR@/cfa
    10379CCDEPMODE = @CCDEPMODE@
    104 CFA_BACKEND_CC = @CFA_BACKEND_CC@
    10580CFA_BINDIR = @CFA_BINDIR@
    10681CFA_INCDIR = @CFA_INCDIR@
     
    12398EGREP = @EGREP@
    12499EXEEXT = @EXEEXT@
     100GCC_PATH = @GCC_PATH@
    125101GREP = @GREP@
    126102INSTALL = @INSTALL@
     
    200176fstream_test_SOURCES = fstream_test.c
    201177vector_test_SOURCES = vector_int.c array.c vector_test.c
    202 avl_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
    203178all: all-am
    204179
     
    238213clean-noinstPROGRAMS:
    239214        -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
    240 avl_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)
    243215fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES)
    244216        @rm -f fstream_test$(EXEEXT)
    245         $(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
     217        $(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
    246218vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES)
    247219        @rm -f vector_test$(EXEEXT)
    248         $(AM_V_CCLD)$(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
     220        $(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
    249221
    250222mostlyclean-compile:
     
    255227
    256228@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@
    264229@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@
    265230@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@
     
    267232
    268233.c.o:
    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@
     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@
    272237@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    273 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
     238@am__fastdepCC_FALSE@   $(COMPILE) -c $<
    274239
    275240.c.obj:
    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@
     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@
    279244@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    280 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
    281 
    282 avl_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 
    289 avl_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 
    296 avl0.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 
    303 avl0.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 
    310 avl1.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 
    317 avl1.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 
    324 avl2.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 
    331 avl2.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 
    338 avl3.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 
    345 avl3.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 
    352 avl4.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 
    359 avl4.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 
    366 avl-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 
    373 avl-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`
     245@am__fastdepCC_FALSE@   $(COMPILE) -c `$(CYGPATH_W) '$<'`
    379246
    380247ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  • src/examples/abstype.c

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

    rf80e0218 r1b5c81ed  
    1111// Created On       : Wed Feb  3 07:56:22 2016
    1212// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Fri Mar 11 17:42:08 2016
    14 // Update Count     : 59
     13// Last Modified On : Wed Feb 17 11:43:23 2016
     14// Update Count     : 40
    1515//
    1616
    17 forall( otype T ) T * malloc( char fill );
    18 forall( dtype T ) T *?=?( T **, void * );
    19 void *malloc( unsigned long int );
    20 #if 0
    2117#include <fstream>
    2218#include <stdlib>
     
    2925int * bar( int * p, int c ) { return p; }
    3026int * baz( int * p, int c ) { return p; }
    31 #endif
    3227
    3328int main( void ) {
    34 #if 0
    3529    size_t size = 10;
    3630    int * p;
    3731    struct S { int x; double y; } * s;
    38 #endif
    3932
    40 #if 0
    4133    p = malloc( sizeof(*p) );                                                   // C malloc, type unsafe
    4234        printf( "here1\n" );
     
    4537        printf( "here2\n" );
    4638    free( p );
    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
     39    p = malloc( (char)'\0' );                                                                   // CFA malloc, type safe
    5340        printf( "here3\n" );
    5441    p = malloc( p, 1000 );                                                              // CFA remalloc, type safe
     
    7360        printf( "here9\n" );
    7461    free( p );
    75 
     62#if 0
    7663    float * fp = malloc() + 1;
    7764    fprintf( stderr, "%p %p\n", fp, fp - 1 );
  • src/examples/includes.c

    rf80e0218 r1b5c81ed  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 22:30:02 2016
    13 // Update Count     : 370
     12// Last Modified On : Wed Mar  2 23:28:02 2016
     13// Update Count     : 328
    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
    3736#include <bfdlink.h>
    3837#include <byteswap.h>
     
    5756#include <err.h>
    5857#include <errno.h>
     58#if 0
    5959#include <error.h>
     60#endif
    6061#include <eti.h>
    6162#include <evdns.h>
    6263#include <event.h>
    6364#include <evhttp.h>
    64 #endif
    6565#if 0
    6666#include <evrpc.h>
     
    129129
    130130//#define _GNU_SOURCE
    131 #include <bfd.h>
    132 //#include <error.h>
     131#include <error.h>
    133132
    134133#endif // 0
  • src/examples/sum.c

    rf80e0218 r1b5c81ed  
    55// file "LICENCE" distributed with Cforall.
    66//
    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.
     7// sum.c --
    98//
    109// Author           : Peter A. Buhr
    1110// Created On       : Wed May 27 17:56:53 2015
    1211// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Thu May 26 09:25:42 2016
    14 // Update Count     : 201
     12// Last Modified On : Fri Mar  4 15:06:47 2016
     13// Update Count     : 196
    1514//
    1615
     
    4948        } // for
    5049        sout | "sum from" | low | "to" | High | "is"
    51                  | (int)sum( size, a ) | ", check" | (int)s | endl;
     50                 | (int)sum( size, a ) | "" | ", check" | (int)s | endl;
    5251
    5352        int s = 0, a[size], v = low;
     
    5756        } // for
    5857        sout | "sum from" | low | "to" | High | "is"
    59                  | sum( size, (int *)a ) | ", check" | (int)s | endl;
     58                 | sum( size, (int *)a ) | "" | ", check" | (int)s | endl;
    6059
    6160        float s = 0.0, a[size], v = low / 10.0;
     
    6564        } // for
    6665        sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
    67                  | sum( size, (float *)a ) | ", check" | (float)s | endl;
     66                 | sum( size, (float *)a ) | "" | ", check" | (float)s | endl;
    6867
    6968        double s = 0, a[size], v = low / 10.0;
     
    7372        } // for
    7473        sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
    75                  | sum( size, (double *)a ) | ", check" | (double)s | endl;
     74                 | sum( size, (double *)a ) | "" | ", check" | (double)s | endl;
    7675
    7776        struct S { int i, j; } 0 = { 0, 0 }, 1 = { 1, 1 };
    78         S ?+?( S t1, S t2 ) { return (S){ t1.i + t2.i, t1.j + t2.j }; }
     77        S ?+?( S t1, S t2 ) { S s = { t1.i + t2.i, t1.j + t2.j }; return s; }
    7978        S ?+=?( S *t1, S t2 ) { *t1 = *t1 + t2; return *t1; }
    8079        S ++?( S *t ) { *t += 1; return *t; }
     
    8887        } // for
    8988        sout | "sum from" | low | "to" | High | "is"
    90                  | sum( size, (S *)a ) | ", check" | (S)s | endl;
     89                 | sum( size, (S *)a ) | "" | ", check" | (S)s | endl;
    9190} // main
    9291
  • src/initialization.txt

    rf80e0218 r1b5c81ed  
    3434sure that resolved initializers for all declarations are being
    3535generated.
    36 
    37 
    38 ------
    39 
    40 More 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 
    47 No, unfortunately. Initialization isn't being rewritten as assignment,
    48 so you shouldn't allow the particular selection of assignment
    49 operators that happen to be in scope (and which may include
    50 user-defined operators) to guide the type resolution.
    51 
    52 I don't think there is any way to rewrite an initializer as a single
    53 expression and have the resolver just do the right thing. I see the
    54 algorithm as:
    55 
    56 For 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
    62 Go through the list of possibilities and pick the lowest cost
    63 
    64 As with many things in the resolver, it's conceptually simple but the
    65 implementation may be a bit of a pain. It fits in with functions like
    66 findSingleExpression, findIntegralExpression in Resolver.cc, although
    67 it will be significantly more complicated than any of the existing
    68 ones.
    69 
    70 
    71 
  • src/libcfa/Makefile.am

    rf80e0218 r1b5c81ed  
    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 : Mon Jun 13 14:27:22 2016
    14 ## Update Count     : 166
     13## Last Modified On : Wed Apr  6 21:10:44 2016
     14## Update Count     : 123
    1515###############################################################################
    1616
     
    5050        @BACKEND_CC@ -c -o $@ $<
    5151
    52 CFLAGS = -quiet -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 = -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 headers = limits stdlib math iostream fstream iterator rational
    56 libobjs = ${headers:=.o}
     55# extension-less header files are overridden by default make rules => explicitly override rule
     56% : %.c
     57        true
    5758
    58 # extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
    59 % : %.c
    60         @true
     59.c.o : ${abs_top_srcdir}/src/driver/cfa-cpp
     60        ${CC} ${CFLAGS} -c -o $@ $<
    6161
    62 ${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp       # add dependency to cfa-cpp so all libraries are rebuilt with new translator
     62libs = limits stdlib iostream fstream iterator rational
     63libcfa_a_SOURCES = libcfa-prelude.c ${libs:=.c}
    6364
    64 libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
     65cheaders = # expat
     66cfaheaders = # limits
     67include_HEADERS = ${cheaders:=.h} ${libs} ${cfaheaders}
    6568
    66 include_HEADERS = ${headers}
    67 
    68 CLEANFILES = libcfa-prelude.c
    6969MAINTAINERCLEANFILES += ${includedir}/*
  • src/libcfa/Makefile.in

    rf80e0218 r1b5c81ed  
    8181AR = ar
    8282ARFLAGS = cru
    83 AM_V_AR = $(am__v_AR_@AM_V@)
    84 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
    85 am__v_AR_0 = @echo "  AR    " $@;
    86 AM_V_at = $(am__v_at_@AM_V@)
    87 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    88 am__v_at_0 = @
    8983libcfa_a_AR = $(AR) $(ARFLAGS)
    9084libcfa_a_LIBADD =
    91 am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) math.$(OBJEXT) \
    92         iostream.$(OBJEXT) fstream.$(OBJEXT) iterator.$(OBJEXT) \
    93         rational.$(OBJEXT)
     85am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) iostream.$(OBJEXT) \
     86        fstream.$(OBJEXT) iterator.$(OBJEXT) rational.$(OBJEXT)
    9487am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1)
    9588libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
     
    10093COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    10194        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    102 AM_V_CC = $(am__v_CC_@AM_V@)
    103 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    104 am__v_CC_0 = @echo "  CC    " $@;
    10595CCLD = $(CC)
    10696LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    107 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    108 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    109 am__v_CCLD_0 = @echo "  CCLD  " $@;
    110 AM_V_GEN = $(am__v_GEN_@AM_V@)
    111 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    112 am__v_GEN_0 = @echo "  GEN   " $@;
    11397SOURCES = $(libcfa_a_SOURCES)
    11498DIST_SOURCES = $(libcfa_a_SOURCES)
     
    121105ALLOCA = @ALLOCA@
    122106AMTAR = @AMTAR@
    123 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    124107AUTOCONF = @AUTOCONF@
    125108AUTOHEADER = @AUTOHEADER@
     
    127110AWK = @AWK@
    128111BACKEND_CC = @BACKEND_CC@
    129 CC = ${abs_top_srcdir}/src/driver/cfa
     112CC = ${abs_top_srcdir}/src/driver/cfa 
    130113CCDEPMODE = @CCDEPMODE@
    131 CFA_BACKEND_CC = @CFA_BACKEND_CC@
    132114CFA_BINDIR = @CFA_BINDIR@
    133115CFA_INCDIR = @CFA_INCDIR@
    134116CFA_LIBDIR = @CFA_LIBDIR@
    135117CFA_PREFIX = @CFA_PREFIX@
    136 CFLAGS = -quiet -g -Wall -Wno-unused-function -B${abs_top_srcdir}/src/driver -XCFA -t  # TEMPORARY: does not build with -O2
     118CFLAGS = -g -Wall -Wno-unused-function -B${abs_top_srcdir}/src/driver -XCFA -t  # TEMPORARY: does not build with -O2
    137119CPP = @CPP@
    138120CPPFLAGS = @CPPFLAGS@
     
    148130EGREP = @EGREP@
    149131EXEEXT = @EXEEXT@
     132GCC_PATH = @GCC_PATH@
    150133GREP = @GREP@
    151134INSTALL = @INSTALL@
     
    230213MAINTAINERCLEANFILES = ${addprefix ${libdir}/,${cfalib_DATA}} \
    231214        ${addprefix ${libdir}/,${lib_LIBRARIES}} ${includedir}/*
    232 headers = limits stdlib math iostream fstream iterator rational
    233 libobjs = ${headers:=.o}
    234 libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
    235 include_HEADERS = ${headers}
    236 CLEANFILES = libcfa-prelude.c
     215libs = limits stdlib iostream fstream iterator rational
     216libcfa_a_SOURCES = libcfa-prelude.c ${libs:=.c}
     217cheaders = # expat
     218cfaheaders = # limits
     219include_HEADERS = ${cheaders:=.h} ${libs} ${cfaheaders}
    237220all: all-am
    238221
     
    300283        -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
    301284libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES)
    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
     285        -rm -f libcfa.a
     286        $(libcfa_a_AR) libcfa.a $(libcfa_a_OBJECTS) $(libcfa_a_LIBADD)
     287        $(RANLIB) libcfa.a
    305288
    306289mostlyclean-compile:
     
    315298@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa-prelude.Po@am__quote@
    316299@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/limits.Po@am__quote@
    317 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Po@am__quote@
    318300@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Po@am__quote@
    319301@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdlib.Po@am__quote@
    320302
    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@
     303.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@
    325307@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    326 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
    327 
    328 .c.obj:
    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@
    332 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    333 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
     308@am__fastdepCC_FALSE@   $(COMPILE) -c `$(CYGPATH_W) '$<'`
    334309install-cfalibDATA: $(cfalib_DATA)
    335310        @$(NORMAL_INSTALL)
     
    480455
    481456clean-generic:
    482         -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
    483457
    484458distclean-generic:
     
    605579        @BACKEND_CC@ -c -o $@ $<
    606580
    607 # extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
     581# extension-less header files are overridden by default make rules => explicitly override rule
    608582% : %.c
    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
     583        true
     584
     585.c.o : ${abs_top_srcdir}/src/driver/cfa-cpp
     586        ${CC} ${CFLAGS} -c -o $@ $<
    612587
    613588# Tell versions [3.59,3.63) of GNU make to not export all variables.
  • src/libcfa/fstream

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

    rf80e0218 r1b5c81ed  
    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 : Rob Schluntz
    12 // Last Modified On : Mon May 02 15:14:52 2016
    13 // Update Count     : 187
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Apr  6 17:55:27 2016
     13// Update Count     : 176
    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
    9596    va_start( args, fmt );
    9697    int len = vfprintf( (FILE *)(os->file), fmt, args );
     
    102103        } // if
    103104    va_end( args );
    104 
    105         sepReset( os );                                                                         // reset separator
    106105        return len;
    107106} // prtfmt
     
    140139        if ( fclose( (FILE *)(is->file) ) == EOF ) {
    141140                perror( IO_MSG "close input" );
    142         } // if
     141        } // if 
    143142} // close
    144143
     
    155154        return is;
    156155} // read
    157 
     156 
    158157ifstream *ungetc( ifstream * is, char c ) {
    159158        if ( fail( is ) ) {
  • src/libcfa/iostream.c

    rf80e0218 r1b5c81ed  
    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 : Thu May 26 10:08:31 2016
    13 // Update Count     : 305
     12// Last Modified On : Wed Apr  6 16:13:29 2016
     13// Update Count     : 278
    1414//
    1515
     
    2121#include <float.h>                                                                              // DBL_DIG, LDBL_DIG
    2222#include <complex.h>                                                                    // creal, cimag
     23#include <ctype.h>                                                                              // isspace, ispunct
    2324}
    2425
     
    3334ostype * ?|?( ostype *os, short int si ) {
    3435        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     36        sepReset( os );
    3537        prtfmt( os, "%hd", si );
    3638        return os;
     
    4042ostype * ?|?( ostype *os, unsigned short int usi ) {
    4143        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     44        sepReset( os );
    4245        prtfmt( os, "%hu", usi );
    4346        return os;
     
    4750ostype * ?|?( ostype *os, int i ) {
    4851        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     52        sepReset( os );
    4953        prtfmt( os, "%d", i );
    5054        return os;
     
    5458ostype * ?|?( ostype *os, unsigned int ui ) {
    5559        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     60        sepReset( os );
    5661        prtfmt( os, "%u", ui );
    5762        return os;
     
    6166ostype * ?|?( ostype *os, long int li ) {
    6267        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     68        sepReset( os );
    6369        prtfmt( os, "%ld", li );
    6470        return os;
     
    6874ostype * ?|?( ostype *os, unsigned long int uli ) {
    6975        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     76        sepReset( os );
    7077        prtfmt( os, "%lu", uli );
    7178        return os;
     
    7582ostype * ?|?( ostype *os, long long int lli ) {
    7683        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     84        sepReset( os );
    7785        prtfmt( os, "%lld", lli );
    7886        return os;
     
    8290ostype * ?|?( ostype *os, unsigned long long int ulli ) {
    8391        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     92        sepReset( os );
    8493        prtfmt( os, "%llu", ulli );
    8594        return os;
     
    8998ostype * ?|?( ostype *os, float f ) {
    9099        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     100        sepReset( os );
    91101        prtfmt( os, "%g", f );
    92102        return os;
     
    96106ostype * ?|?( ostype *os, double d ) {
    97107        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     108        sepReset( os );
    98109        prtfmt( os, "%.*lg", DBL_DIG, d );
    99110        return os;
     
    103114ostype * ?|?( ostype *os, long double ld ) {
    104115        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     116        sepReset( os );
    105117        prtfmt( os, "%.*Lg", LDBL_DIG, ld );
    106118        return os;
     
    143155                // opening delimiters
    144156                ['('] : Open, ['['] : Open, ['{'] : Open,
    145                 ['$'] : Open, [(unsigned char)'£'] : Open, [(unsigned char)'¥'] : Open,
    146                 [(unsigned char)'¡'] : Open, [(unsigned char)'¿'] : Open, [(unsigned char)'«'] : Open,
     157                ['$'] : Open, [(unsigned char)'£'] : Open, [(unsigned char)'¥'] : Open, [(unsigned char)'¿'] : Open, [(unsigned char)'«'] : Open,
    147158                // closing delimiters
    148159                [','] : Close, ['.'] : Close, [':'] : Close, [';'] : Close, ['!'] : Close, ['?'] : Close,
     
    151162                // opening-closing delimiters
    152163                ['\''] : OpenClose, ['`'] : OpenClose, ['"'] : OpenClose,
    153                 [' '] : OpenClose, ['\f'] : OpenClose, ['\n'] : OpenClose, ['\r'] : OpenClose, ['\t'] : OpenClose, ['\v'] : OpenClose, // isspace
     164                ['\f'] : OpenClose, ['\n'] : OpenClose, ['\r'] : OpenClose, ['\t'] : OpenClose, ['\v'] : OpenClose, // isspace
    154165        }; // mask
    155166
    156   if ( cp[0] == '\0' ) { sepOff( os ); return os; }             // null string => no separator
    157 
     167        int len = strlen( cp );
     168        // null string => no separator
     169  if ( len == 0 ) { sepOff( os ); return os; }
    158170        // first character IS NOT spacing or closing punctuation => add left separator
    159171        unsigned char ch = cp[0];                                                       // must make unsigned
     
    161173                prtfmt( os, "%s", sepGet( os ) );
    162174        } // if
    163 
    164         // if string starts line, must reset to determine open state because separator is off
    165         sepReset( os );                                                                         // reset separator
    166 
    167175        // last character IS spacing or opening punctuation => turn off separator for next item
    168         unsigned int len = strlen( cp ), posn = len - 1;
     176        unsigned int posn = len - 1;
    169177        ch = cp[posn];                                                                          // must make unsigned
    170         if ( sepPrt( os ) && mask[ ch ] != Open && mask[ ch ] != OpenClose ) {
     178        if ( mask[ ch ] == Open || mask[ ch ] == OpenClose ) {
     179                sepOff( os );
     180        } else {
    171181                sepOn( os );
    172         } else {
    173                 sepOff( os );
    174182        } // if
    175183        return write( os, cp, len );
     
    179187ostype * ?|?( ostype *os, const void *p ) {
    180188        if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
     189        sepReset( os );
    181190        prtfmt( os, "%p", p );
    182191        return os;
     
    184193
    185194
    186 forall( dtype ostype | ostream( ostype ) )
     195forall( dtype ostype | ostream( ostype ) ) 
    187196ostype * ?|?( ostype *os, ostype * (* manip)( ostype * ) ) {
    188197        return manip( os );
    189198} // ?|?
    190199
    191 forall( dtype ostype | ostream( ostype ) )
     200forall( dtype ostype | ostream( ostype ) ) 
    192201ostype * endl( ostype * os ) {
    193202        os | '\n';
     
    197206} // endl
    198207
    199 forall( dtype ostype | ostream( ostype ) )
     208forall( dtype ostype | ostream( ostype ) ) 
    200209ostype * sepOn( ostype * os ) {
    201210        sepOn( os );
     
    203212} // sepOn
    204213
    205 forall( dtype ostype | ostream( ostype ) )
     214forall( dtype ostype | ostream( ostype ) ) 
    206215ostype * sepOff( ostype * os ) {
    207216        sepOff( os );
     
    209218} // sepOff
    210219
    211 forall( dtype ostype | ostream( ostype ) )
     220forall( dtype ostype | ostream( ostype ) ) 
    212221ostype * sepEnable( ostype * os ) {
    213222        sepEnable( os );
     
    215224} // sepEnable
    216225
    217 forall( dtype ostype | ostream( ostype ) )
     226forall( dtype ostype | ostream( ostype ) ) 
    218227ostype * sepDisable( ostype * os ) {
    219228        sepDisable( os );
     
    335344} // ?|?
    336345
    337 _Istream_cstrUC cstr( char * str ) { return (_Istream_cstrUC){ str }; }
     346_Istream_cstrUC cstr( char * s ) { _Istream_cstrUC s = { s }; return s; }
    338347forall( dtype istype | istream( istype ) )
    339348istype * ?|?( istype * is, _Istream_cstrUC cstr ) {
     
    342351} // cstr
    343352
    344 _Istream_cstrC cstr( char * str, int size ) { return (_Istream_cstrC){ str, size }; }
     353_Istream_cstrC cstr( char * s, int size ) { _Istream_cstrC s = { s, size }; return s; }
    345354forall( dtype istype | istream( istype ) )
    346355istype * ?|?( istype * is, _Istream_cstrC cstr ) {
  • src/libcfa/prelude.cf

    rf80e0218 r1b5c81ed  
    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
    641 void    ?{}( _Bool * ),                         ?{}( volatile _Bool * );
    642 void    ?{}( char * ),  ?{}( volatile char * );
    643 void    ?{}( unsigned char * ), ?{}( volatile unsigned char * );
    644 void    ?{}( char signed * ),                   ?{}( volatile char signed * );
    645 void    ?{}( int short * ),                             ?{}( volatile int short * );
    646 void    ?{}( int short unsigned * ),    ?{}( volatile int short unsigned * );
    647 void    ?{}( signed int * ),                    ?{}( volatile signed int * );
    648 void    ?{}( unsigned int * ),                  ?{}( volatile unsigned int * );
    649 void    ?{}( signed long int * ),               ?{}( volatile signed long int * );
    650 void    ?{}( unsigned long int * ),             ?{}( volatile unsigned long int * );
    651 void    ?{}( signed long long int * ),          ?{}( volatile signed long long int * );
    652 void    ?{}( unsigned long long int * ),        ?{}( volatile unsigned long long int * );
    653 void    ?{}( float * ),                         ?{}( volatile float * );
    654 void    ?{}( double * ),                        ?{}( volatile double * );
    655 void    ?{}( long double * ),                   ?{}( volatile long double * );
    656 void    ?{}( float _Complex * ),                ?{}( volatile float _Complex * );
    657 void    ?{}( double _Complex * ),               ?{}( volatile double _Complex * );
    658 void    ?{}( long double _Complex * ),          ?{}( volatile long double _Complex * );
    659 
    660 // copy ctor
    661 void    ?{}( _Bool *, _Bool ),                                  ?{}( volatile _Bool *, _Bool );
    662 void    ?{}( char *, char ),    ?{}( volatile char *, char );
    663 void    ?{}( unsigned char *, unsigned char ),                  ?{}( volatile unsigned char *, unsigned char );
    664 void    ?{}( char signed *, char signed ),                      ?{}( volatile char signed *, char signed );
    665 void    ?{}( int short *, int short ),                          ?{}( volatile int short *, int short );
    666 void    ?{}( int short unsigned *, int short unsigned ),        ?{}( volatile int short unsigned *, int short unsigned );
    667 void    ?{}( signed int *, signed int),                         ?{}( volatile signed int *, signed int );
    668 void    ?{}( unsigned int *, unsigned int),                     ?{}( volatile unsigned int *, unsigned int );
    669 void    ?{}( signed long int *, signed long int),               ?{}( volatile signed long int *, signed long int );
    670 void    ?{}( unsigned long int *, unsigned long int),           ?{}( volatile unsigned long int *, unsigned long int );
    671 void    ?{}( signed long long int *, signed long long int),     ?{}( volatile signed long long int *, signed long long int );
    672 void    ?{}( unsigned long long int *, unsigned long long int), ?{}( volatile unsigned long long int *, unsigned long long int );
    673 void    ?{}( float *, float),                                   ?{}( volatile float *, float );
    674 void    ?{}( double *, double),                                 ?{}( volatile double *, double );
    675 void    ?{}( long double *, long double),                       ?{}( volatile long double *, long double );
    676 void    ?{}( float _Complex *, float _Complex),                 ?{}( volatile float _Complex *, float _Complex );
    677 void    ?{}( double _Complex *, double _Complex),               ?{}( volatile double _Complex *, double _Complex );
    678 void    ?{}( long double _Complex *, long double _Complex),     ?{}( volatile long double _Complex *, long double _Complex );
    679 
    680 // dtor
    681 void    ^?{}( _Bool * ),                        ^?{}( volatile _Bool * );
    682 void    ^?{}( char * ), ^?{}( volatile char * );
    683 void    ^?{}( char unsigned * ),                        ^?{}( volatile char unsigned * );
    684 void    ^?{}( char signed * ),                  ^?{}( volatile char signed * );
    685 void    ^?{}( int short * ),                            ^?{}( volatile int short * );
    686 void    ^?{}( int short unsigned * ),   ^?{}( volatile int short unsigned * );
    687 void    ^?{}( signed int * ),                   ^?{}( volatile signed int * );
    688 void    ^?{}( unsigned int * ),                 ^?{}( volatile unsigned int * );
    689 void    ^?{}( signed long int * ),              ^?{}( volatile signed long int * );
    690 void    ^?{}( unsigned long int * ),            ^?{}( volatile unsigned long int * );
    691 void    ^?{}( signed long long int * ),         ^?{}( volatile signed long long int * );
    692 void    ^?{}( unsigned long long int * ),       ^?{}( volatile unsigned long long int * );
    693 void    ^?{}( float * ),                        ^?{}( volatile float * );
    694 void    ^?{}( double * ),                       ^?{}( volatile double * );
    695 void    ^?{}( long double * ),                  ^?{}( volatile long double * );
    696 void    ^?{}( float _Complex * ),               ^?{}( volatile float _Complex * );
    697 void    ^?{}( double _Complex * ),              ^?{}( volatile double _Complex * );
    698 void    ^?{}( 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
    720 forall( ftype FT ) void ?{}( FT **, FT * );
    721 forall( ftype FT ) void ?{}( FT * volatile *, FT * );
    722 
    723 forall( dtype DT ) void ?{}(                 DT *          *,                   DT * );
    724 forall( dtype DT ) void ?{}(                 DT * volatile *,                   DT * );
    725 forall( dtype DT ) void ?{}( const           DT *          *,                   DT * );
    726 forall( dtype DT ) void ?{}( const           DT * volatile *,                   DT * );
    727 forall( dtype DT ) void ?{}( const           DT *          *, const             DT * );
    728 forall( dtype DT ) void ?{}( const           DT * volatile *, const             DT * );
    729 forall( dtype DT ) void ?{}(       volatile  DT *          *,                   DT * );
    730 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   DT * );
    731 forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    DT * );
    732 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    DT * );
    733 
    734 forall( dtype DT ) void ?{}( const volatile  DT *          *,                   DT * );
    735 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   DT * );
    736 forall( dtype DT ) void ?{}( const volatile  DT *          *, const             DT * );
    737 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             DT * );
    738 forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    DT * );
    739 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    DT * );
    740 forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    DT * );
    741 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    DT * );
    742 
    743 forall( dtype DT ) void ?{}(                 DT *          *,                   void * );
    744 forall( dtype DT ) void ?{}(                 DT * volatile *,                   void * );
    745 forall( dtype DT ) void ?{}( const           DT *          *,                   void * );
    746 forall( dtype DT ) void ?{}( const           DT * volatile *,                   void * );
    747 forall( dtype DT ) void ?{}( const           DT *          *, const             void * );
    748 forall( dtype DT ) void ?{}( const           DT * volatile *, const             void * );
    749 forall( dtype DT ) void ?{}(       volatile  DT *          *,                   void * );
    750 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   void * );
    751 forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    void * );
    752 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    void * );
    753 
    754 forall( dtype DT ) void ?{}( const volatile  DT *          *,                   void * );
    755 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   void * );
    756 forall( dtype DT ) void ?{}( const volatile  DT *          *, const             void * );
    757 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             void * );
    758 forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    void * );
    759 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    void * );
    760 forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    void * );
    761 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    void * );
    762 
    763 forall( dtype DT ) void ?{}(                 void *          *,                 DT * );
    764 forall( dtype DT ) void ?{}(                 void * volatile *,                 DT * );
    765 forall( dtype DT ) void ?{}( const           void *          *,                 DT * );
    766 forall( dtype DT ) void ?{}( const           void * volatile *,                 DT * );
    767 forall( dtype DT ) void ?{}( const           void *          *, const           DT * );
    768 forall( dtype DT ) void ?{}( const           void * volatile *, const           DT * );
    769 forall( dtype DT ) void ?{}(        volatile void *          *,                 DT * );
    770 forall( dtype DT ) void ?{}(        volatile void * volatile *,                 DT * );
    771 forall( dtype DT ) void ?{}(        volatile void *          *,       volatile  DT * );
    772 forall( dtype DT ) void ?{}(        volatile void * volatile *,       volatile  DT * );
    773 forall( dtype DT ) void ?{}( const volatile void *           *,                 DT * );
    774 forall( dtype DT ) void ?{}( const volatile void * volatile *,                  DT * );
    775 forall( dtype DT ) void ?{}( const volatile void *           *, const           DT * );
    776 forall( dtype DT ) void ?{}( const volatile void * volatile *, const            DT * );
    777 forall( dtype DT ) void ?{}( const volatile void *           *,       volatile  DT * );
    778 forall( dtype DT ) void ?{}( const volatile void * volatile *,        volatile  DT * );
    779 forall( dtype DT ) void ?{}( const volatile void *           *, const volatile  DT * );
    780 forall( dtype DT ) void ?{}( const volatile void * volatile *, const volatile   DT * );
    781 
    782 void    ?{}(                void *          *,                void * );
    783 void    ?{}(                void * volatile *,                void * );
    784 void    ?{}( const          void *          *,                void * );
    785 void    ?{}( const          void * volatile *,                void * );
    786 void    ?{}( const          void *          *, const          void * );
    787 void    ?{}( const          void * volatile *, const          void * );
    788 void    ?{}(       volatile void *          *,                void * );
    789 void    ?{}(       volatile void * volatile *,                void * );
    790 void    ?{}(       volatile void *          *,       volatile void * );
    791 void    ?{}(       volatile void * volatile *,       volatile void * );
    792 void    ?{}( const volatile void *          *,                void * );
    793 void    ?{}( const volatile void * volatile *,                void * );
    794 void    ?{}( const volatile void *          *, const          void * );
    795 void    ?{}( const volatile void * volatile *, const          void * );
    796 void    ?{}( const volatile void *          *,       volatile void * );
    797 void    ?{}( const volatile void * volatile *,       volatile void * );
    798 void    ?{}( const volatile void *          *, const volatile void * );
    799 void    ?{}( 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 * );
    803 forall( dtype DT ) void ?{}( const          DT *          *, forall( dtype DT2 ) const DT2 * );
    804 forall( 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 * );
    807 forall( dtype DT ) void ?{}( const volatile DT *          *, forall( dtype DT2 ) const DT2 * );
    808 forall( dtype DT ) void ?{}( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
    809 
    810 forall( ftype FT ) void ?{}( FT *          *, forall( ftype FT2 ) FT2 * );
    811 forall( ftype FT ) void ?{}( FT * volatile *, forall( ftype FT2 ) FT2 * );
    812 
    813 // default ctors
    814 forall( ftype FT ) void ?{}( FT *          * );
    815 forall( ftype FT ) void ?{}( FT * volatile * );
    816 
    817 forall( dtype DT ) void ?{}(                 DT *          *);
    818 forall( dtype DT ) void ?{}(                 DT * volatile *);
    819 forall( dtype DT ) void ?{}( const           DT *          *);
    820 forall( dtype DT ) void ?{}( const           DT * volatile *);
    821 forall( dtype DT ) void ?{}(       volatile  DT *          *);
    822 forall( dtype DT ) void ?{}(       volatile  DT * volatile *);
    823 forall( dtype DT ) void ?{}( const volatile  DT *          *);
    824 forall( dtype DT ) void ?{}( const volatile  DT * volatile *);
    825 
    826 void    ?{}(                void *          *);
    827 void    ?{}(                void * volatile *);
    828 void    ?{}( const          void *          *);
    829 void    ?{}( const          void * volatile *);
    830 void    ?{}(       volatile void *          *);
    831 void    ?{}(       volatile void * volatile *);
    832 void    ?{}( const volatile void *          *);
    833 void    ?{}( const volatile void * volatile *);
    834 
    835 // dtors
    836 forall( ftype FT ) void ^?{}( FT *         * );
    837 forall( ftype FT ) void ^?{}( FT * volatile * );
    838 
    839 forall( dtype DT ) void ^?{}(                DT *          *);
    840 forall( dtype DT ) void ^?{}(                DT * volatile *);
    841 forall( dtype DT ) void ^?{}( const          DT *          *);
    842 forall( dtype DT ) void ^?{}( const          DT * volatile *);
    843 forall( dtype DT ) void ^?{}(      volatile  DT *          *);
    844 forall( dtype DT ) void ^?{}(      volatile  DT * volatile *);
    845 forall( dtype DT ) void ^?{}( const volatile  DT *         *);
    846 forall( dtype DT ) void ^?{}( const volatile  DT * volatile *);
    847 
    848 void    ^?{}(               void *          *);
    849 void    ^?{}(               void * volatile *);
    850 void    ^?{}( const         void *          *);
    851 void    ^?{}( const         void * volatile *);
    852 void    ^?{}(      volatile void *          *);
    853 void    ^?{}(      volatile void * volatile *);
    854 void    ^?{}( const volatile void *         *);
    855 void    ^?{}( const volatile void * volatile *);
  • src/libcfa/rational

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

    rf80e0218 r1b5c81ed  
    1111// Created On       : Wed Apr  6 17:54:28 2016
    1212// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Wed May  4 14:16:14 2016
    14 // Update Count     : 25
     13// Last Modified On : Tue Apr 12 21:26:42 2016
     14// Update Count     : 21
    1515//
    1616
     
    1818#include "fstream"
    1919#include "stdlib"
    20 #include "math"                                                                                 // floor
    2120
    2221
     
    5352// constructors
    5453
    55 void ?{}( Rational * r ) {
    56     r{ 0, 1 };
     54Rational rational() {
     55    return (Rational){ 0, 1 };
    5756} // rational
    5857
    59 void ?{}( Rational * r, long int n ) {
    60     r{ n, 1 };
     58Rational rational( long int n ) {
     59    return (Rational){ n, 1 };
    6160} // rational
    6261
    63 void ?{}( Rational * r, long int n, long int d ) {
     62Rational rational( long int n, long int d ) {
    6463    long int t = simplify( &n, &d );                                    // simplify
    65     r->numerator = n / t;
    66         r->denominator = d / t;
     64    return (Rational){ n / t, d / t };
    6765} // rational
    6866
     
    173171Rational narrow( double f, long int md ) {
    174172        if ( md <= 1 ) {                                                                        // maximum fractional digits too small?
    175                 return (Rational){ f, 1};                                               // truncate fraction
     173                Rational t = rational( f, 1 );                                  // truncate fraction
     174                return t;
    176175        } // if
    177176
     
    199198                k[2] = x * k[1] + k[0]; k[0] = k[1]; k[1] = k[2];
    200199        } // for
    201         return (Rational){ neg ? -h[1] : h[1], k[1] };
     200        Rational t = rational( neg ? -h[1] : h[1], k[1] );
     201        return t;
    202202} // narrow
    203203
  • src/libcfa/stdlib

    rf80e0218 r1b5c81ed  
    1010// Created On       : Thu Jan 28 17:12:35 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 27 22:03:29 2016
    13 // Update Count     : 96
     12// Last Modified On : Wed Apr 13 14:45:53 2016
     13// Update Count     : 85
    1414//
    1515
     
    2828#endif // ! EXIT_FAILURE
    2929void exit( int rc );
    30 void abort( void );
    3130} // extern "C"
    3231
    3332//---------------------------------------
    3433
    35 extern "C" { void * malloc( size_t ); }                                 // use default C routine for void *
     34extern "C" {
     35void * malloc( size_t );                                                                // use default C routine for void *
     36} // extern "C"
    3637forall( otype T ) T * malloc( void );
    3738forall( otype T ) T * malloc( char fill );
    3839forall( otype T ) T * malloc( T * ptr, size_t size );
    3940forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill );
    40 extern "C" { void * calloc( size_t nmemb, size_t size ); } // use default C routine for void *
     41extern "C" {
     42void * calloc( size_t nmemb, size_t size );                             // use default C routine for void *
     43} // extern "C"
    4144forall( otype T ) T * calloc( size_t nmemb );
    42 extern "C" { void * realloc( void * ptr, size_t size ); } // use default C routine for void *
     45extern "C" {
     46void * realloc( void * ptr, size_t size );                              // use default C routine for void *
     47} // extern "C"
    4348forall( otype T ) T * realloc( T * ptr, size_t size );
    4449forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill );
     
    4853forall( otype T ) int posix_memalign( T ** ptr, size_t alignment );
    4954
    50 extern "C" {
    51 void * memset( void * ptr, int fill, size_t size );
    52 void free( void * ptr );
    53 } // extern "C"
     55forall( otype T ) T * memset( T * ptr, unsigned char fill ); // use default value '\0' for fill
     56forall( otype T ) T * memset( T * ptr );                                // remove when default value available
    5457
    5558//---------------------------------------
     
    97100
    98101char abs( char );
    99 extern "C" { int abs( int ); }                                                  // use default C routine for int
     102extern "C" {
     103int abs( int );                                                                                 // use default C routine for int
     104} // extern "C"
    100105long int abs( long int );
    101106long long int abs( long long int );
     
    103108double abs( double );
    104109long double abs( long double );
    105 float abs( float _Complex );
    106 double abs( double _Complex );
    107 long double abs( long double _Complex );
     110float _Complex abs( float _Complex );
     111double _Complex abs( double _Complex );
     112long double _Complex abs( long double _Complex );
     113
     114//---------------------------------------
     115
     116float floor( float );
     117extern "C" {
     118double floor( double );                                                                 // use C routine for double
     119} // extern "C"
     120long double floor( long double );
     121
     122float ceil( float );
     123extern "C" {
     124double ceil( double );                                                                  // use C routine for double
     125} // extern "C"
     126long double ceil( long double );
    108127
    109128//---------------------------------------
  • src/libcfa/stdlib.c

    rf80e0218 r1b5c81ed  
    1010// Created On       : Thu Jan 28 17:10:29 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Apr 28 07:54:21 2016
    13 // Update Count     : 166
     12// Last Modified On : Wed Apr 13 14:49:58 2016
     13// Update Count     : 155
    1414//
    1515
     
    2424#include <malloc.h>                                                                             // malloc_usable_size
    2525#include <math.h>                                                                               // fabsf, fabs, fabsl
    26 #include <complex.h>                                                                    // _Complex_I
     26#include <complex.h>                                                                    // _Complex_I, cabsf, cabs, cabsl
    2727} // extern "C"
    2828
     
    3434        //printf( "malloc3\n" );
    3535        T * ptr = (T *)malloc( sizeof(T) );
    36     return memset( ptr, (int)fill, sizeof(T) );
     36    return memset( ptr );
    3737} // malloc
    3838
     
    7878} // posix_memalign
    7979
     80forall( 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
     84forall( 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
    8089//---------------------------------------
    8190
    8291int ato( const char * ptr ) {
    8392        int i;
    84         if ( sscanf( ptr, "%d", &i ) == EOF ) {}
     93        if ( sscanf( ptr, "%d", &i ) == EOF ) {}                        // check return code
    8594        return i;
    8695}
    8796unsigned int ato( const char * ptr ) {
    8897        unsigned int ui;
    89         if ( sscanf( ptr, "%u", &ui ) == EOF ) {}
     98        if ( sscanf( ptr, "%u", &ui ) == EOF ) {}                       // check return code
    9099        return ui;
    91100}
    92101long int ato( const char * ptr ) {
    93102        long int li;
    94         if ( sscanf( ptr, "%ld", &li ) == EOF ) {}
     103        if ( sscanf( ptr, "%ld", &li ) == EOF ) {}                      // check return code
    95104        return li;
    96105}
    97106unsigned long int ato( const char * ptr ) {
    98107        unsigned long int uli;
    99         if ( sscanf( ptr, "%lu", &uli ) == EOF ) {}
     108        if ( sscanf( ptr, "%lu", &uli ) == EOF ) {}                     // check return code
    100109        return uli;
    101110}
    102111long long int ato( const char * ptr ) {
    103112        long long int lli;
    104         if ( sscanf( ptr, "%lld", &lli ) == EOF ) {}
     113        if ( sscanf( ptr, "%lld", &lli ) == EOF ) {}            // check return code
    105114        return lli;
    106115}
    107116unsigned long long int ato( const char * ptr ) {
    108117        unsigned long long int ulli;
    109         if ( sscanf( ptr, "%llu", &ulli ) == EOF ) {}
     118        if ( sscanf( ptr, "%llu", &ulli ) == EOF ) {}           // check return code
    110119        return ulli;
    111120}
     
    113122float ato( const char * ptr ) {
    114123        float f;
    115         if ( sscanf( ptr, "%f", &f ) == EOF ) {}
     124        if ( sscanf( ptr, "%f", &f ) == EOF ) {}                        // check return code
    116125        return f;
    117126}
    118127double ato( const char * ptr ) {
    119128        double d;
    120         if ( sscanf( ptr, "%lf", &d ) == EOF ) {}
     129        if ( sscanf( ptr, "%lf", &d ) == EOF ) {}                       // check return code
    121130        return d;
    122131}
    123132long double ato( const char * ptr ) {
    124133        long double ld;
    125         if ( sscanf( ptr, "%Lf", &ld ) == EOF ) {}
     134        if ( sscanf( ptr, "%Lf", &ld ) == EOF ) {}                      // check return code
    126135        return ld;
    127136}
     
    129138float _Complex ato( const char * ptr ) {
    130139        float re, im;
    131         if ( sscanf( ptr, "%g%gi", &re, &im ) == EOF ) {}
     140        if ( sscanf( ptr, "%g%gi", &re, &im ) == EOF ) {}       // check return code
    132141        return re + im * _Complex_I;
    133142}
    134143double _Complex ato( const char * ptr ) {
    135144        double re, im;
    136         if ( sscanf( ptr, "%lf%lfi", &re, &im ) == EOF ) {}
     145        if ( sscanf( ptr, "%lf%lfi", &re, &im ) == EOF ) {} // check return code
    137146        return re + im * _Complex_I;
    138147}
    139148long double _Complex ato( const char * ptr ) {
    140149        long double re, im;
    141         if ( sscanf( ptr, "%Lf%Lfi", &re, &im ) == EOF ) {}
     150        if ( sscanf( ptr, "%Lf%Lfi", &re, &im ) == EOF ) {}     // check return code
    142151        return re + im * _Complex_I;
    143152}       
     
    213222//---------------------------------------
    214223
    215 // forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
    216 // [ T, T ] div( T t1, T t2 ) { return [ t1 / t2, t1 % t2 ]; }
     224forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
     225[ T, T ] div( T t1, T t2 ) { /* return [ t1 / t2, t1 % t2 ]; */ }
    217226
    218227//---------------------------------------
     
    221230long int abs( long int v ) { return labs( v ); }
    222231long long int abs( long long int v ) { return llabs( v ); }
    223 float abs( float x ) { return fabsf( x ); }
    224 double abs( double x ) { return fabs( x ); }
    225 long double abs( long double x ) { return fabsl( x ); }
    226 float abs( float _Complex x ) { return cabsf( x ); }
    227 double abs( double _Complex x ) { return cabs( x ); }
    228 long double abs( long double _Complex x ) { return cabsl( x ); }
     232float abs( float v ) { return fabsf( v ); }
     233double abs( double v ) { return fabs( v ); }
     234long double abs( long double v ) { return fabsl( v ); }
     235float _Complex abs( float _Complex v ) { return cabsf( v ); }
     236double _Complex abs( double _Complex v ) { return cabs( v ); }
     237long double _Complex abs( long double _Complex v ) { return cabsl( v ); }
     238
     239//---------------------------------------
     240
     241float floor( float v ) { return floorf( v ); }
     242long double floor( long double v ) { return floorl( v ); }
     243
     244float ceil( float v ) { return ceilf( v ); }
     245long double ceil( long double v ) { return ceill( v ); }
    229246
    230247//---------------------------------------
  • src/main.cc

    rf80e0218 r1b5c81ed  
    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 : Sun Jun  5 15:57:30 2016
    13 // Update Count     : 205
     12// Last Modified On : Wed Jan 27 22:20:20 2016
     13// Update Count     : 199
    1414//
    1515
     
    4040#include "MakeLibCfa.h"
    4141#include "InitTweak/Mutate.h"
    42 #include "InitTweak/GenInit.h"
    43 #include "InitTweak/FixInit.h"
    44 #include "InitTweak/FixGlobalInit.h"
     42#include "InitTweak/RemoveInit.h"
    4543//#include "Explain/GenProlog.h"
    4644//#include "Try/Visit.h"
     
    5755
    5856static void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false );
    59 static void dump( std::list< Declaration * > & translationUnit, std::ostream & out = std::cout );
     57static void dump( std::list< Declaration * > & translationUnit );
    6058
    6159bool
    6260        astp = false,
    6361        bresolvep = false,
    64         bboxp = false,
    65         ctorinitp = false,
    6662        exprp = false,
    6763        expraltp = false,
     
    7874        codegenp = false;
    7975
    80 enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
     76enum { Ast, Bresolver, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
    8177
    8278static struct option long_opts[] = {
    8379        { "ast", no_argument, 0, Ast },
    84         { "before-box", no_argument, 0, Bbox },
    8580        { "before-resolver", no_argument, 0, Bresolver },
    86         { "ctorinitfix", no_argument, 0, CtorInitFix },
    8781        { "expr", no_argument, 0, Expr },
    8882        { "expralt", no_argument, 0, ExprAlt },
     
    10397        std::ostream *output = &std::cout;
    10498        int long_index;
    105         std::list< Declaration * > translationUnit;
    106         const char *filename = NULL;
     99        std::list< Declaration* > translationUnit;
    107100
    108101        opterr = 0;                                                                                     // prevent getopt from printing error messages
    109 
     102       
    110103        int c;
    111         while ( (c = getopt_long( argc, argv, "abBcefglnpqrstvyzD:F:", long_opts, &long_index )) != -1 ) {
     104        while ( (c = getopt_long( argc, argv, "abefglnpqrstvyzD:", long_opts, &long_index )) != -1 ) {
    112105                switch ( c ) {
    113106                  case Ast:
     
    119112                        bresolvep = true;
    120113                        break;
    121                   case 'B':                                                                             // print before resolver steps
    122                         bboxp = true;
    123                         break;
    124                   case CtorInitFix:
    125                   case 'c':
    126                         ctorinitp = true;
    127                         break;
    128114                  case Expr:
    129115                  case 'e':                                                                             // dump AST after expression analysis
     
    177163                  case 'D':                                                                             // ignore -Dxxx
    178164                        break;
    179                   case 'F':                                                                             // source file-name without suffix
    180                         filename = optarg;
    181                         break;
    182165                  case '?':
    183166                        cout << "Unknown option: '" << (char)optopt << "'" << endl;
    184                         exit( EXIT_FAILURE );
     167                        exit(1);
    185168                  default:
    186169                        abort();
     
    193176                        input = fopen( argv[ optind ], "r" );
    194177                        if ( ! input ) {
    195                                 std::cout << "Error: can't open " << argv[ optind ] << std::endl;
    196                                 exit( EXIT_FAILURE );
     178                                std::cout << "Error: can't open " << argv[optind] << std::endl;
     179                                exit( 1 );
    197180                        } // 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";
    202181                        optind += 1;
    203182                } else {
    204183                        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";
    208184                } // if
    209185
     
    211187                        output = new ofstream( argv[ optind ] );
    212188                } // if
    213 
     189       
    214190                Parser::get_parser().set_debug( grammarp );
    215191
     
    220196                        if ( builtins == NULL ) {
    221197                                std::cerr << "Error: can't open builtins.cf" << std::endl;
    222                                 exit( EXIT_FAILURE );
     198                                exit( 1 );
    223199                        } // if
    224200
     
    230206                                if ( prelude == NULL ) {
    231207                                        std::cerr << "Error: can't open prelude.cf" << std::endl;
    232                                         exit( EXIT_FAILURE );
     208                                        exit( 1 );
    233209                                } // if
    234 
     210                   
    235211                                parse( prelude, LinkageSpec::Intrinsic );
    236212                        } // if
    237213                } // if
    238214
    239                 parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, grammarp );
    240 
     215                parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, grammarp );     
     216 
    241217                if ( parsep ) {
    242218                        Parser::get_parser().get_parseTree()->printList( std::cout );
     
    273249                OPTPRINT( "mutate" )
    274250                ControlStruct::mutate( translationUnit );
    275                 OPTPRINT( "fixNames" )
     251                OPTPRINT( "fixNames" ) 
    276252                CodeGen::fixNames( translationUnit );
    277                 OPTPRINT( "fixGlobalInit" );
    278                 InitTweak::fixGlobalInit( translationUnit, filename, libcfap || treep );
    279                 OPTPRINT( "tweakInit" )
    280                 InitTweak::genInit( translationUnit );
     253                OPTPRINT( "tweak" )
     254                InitTweak::tweak( translationUnit );
    281255
    282256                if ( libcfap ) {
     
    294268                if ( exprp ) {
    295269                        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;
    305270                }
    306271
     
    311276                OPTPRINT( "convertLvalue" )
    312277                GenPoly::convertLvalue( translationUnit );
    313 
    314                 if ( bboxp ) {
    315                         dump( translationUnit );
    316                         return 0;
    317                 }
    318278                OPTPRINT( "box" )
    319279                GenPoly::box( translationUnit );
    320 
     280               
    321281                // print tree right before code generation
    322282                if ( codegenp ) {
     
    332292        } catch ( SemanticError &e ) {
    333293                if ( errorp ) {
    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;
     294                        dump( translationUnit );
    337295                }
    338296                e.print( std::cerr );
     
    356314        } // try
    357315
    358         deleteAll( translationUnit );
    359316        return 0;
    360317} // main
     
    374331}
    375332
    376 static void dump( std::list< Declaration * > & translationUnit, std::ostream & out ) {
     333static void dump( std::list< Declaration * > & translationUnit ) {
    377334        std::list< Declaration * > decls;
    378335        if ( noprotop ) {
    379                 filter( translationUnit.begin(), translationUnit.end(),
     336                filter( translationUnit.begin(), translationUnit.end(), 
    380337                                std::back_inserter( decls ), notPrelude );
    381338        } else {
     
    383340        }
    384341
    385         printAll( decls, out );
     342        printAll( decls, std::cout );
    386343        deleteAll( translationUnit );
    387344}
Note: See TracChangeset for help on using the changeset viewer.